首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Angular 5-模板错误:“类型‘AbstractControl’上不存在属性'length‘”

Angular 5-模板错误:“类型‘AbstractControl’上不存在属性'length‘”
EN

Stack Overflow用户
提问于 2018-03-04 20:44:06
回答 1查看 1.8K关注 0票数 1

当尝试使用ng build --prod --output-path <my_destination_path>命令构建我的Angular项目时,我得到的错误很少,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
ERROR in src/app/products/product-edit/product-edit.component.html(190,10): : Property 'length' does not exist on type 'AbstractControl'.

模板product-edit.component.html:(错误在第一行)

代码语言:javascript
代码运行次数:0
运行
复制
<div *ngIf="productForm.get('seasons').length>0; else infoTextNoSeasons" formArrayName="seasons">
              <div class="row" *ngFor="let seasonCtrl of productForm.get('seasons').controls; let i = index"
          [formGroupName]="i">
                <div [class.col-xs-10]="i!=0">
                  <div [class.row]="i!=0">
                          <div class="form-group col-sm-12">
                            <label class="sr-only" for="season">Season</label>
                            ...

既然应用程序使用ng serve运行得很好,我不明白为什么Angular不能构建它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-04 21:09:33

当使用--prod标志时,您使用的是AOT编译器。

与在浏览器中运行并将模板编译为JavaScript的即时编译器不同,AOT编译器在构建期间运行,将模板编译为TypeScript,然后将TypeScript编译为JavaScript。

因此应用了TypeScript类型检查,这允许在编译时而不是运行时发现模板中的错误。

错误消息告诉您出了什么问题:您试图从AbstractControl访问length属性,但AbstractControl没有这样的属性。length只存在于FormArray中,但TypeScript不能知道AbstractControl是FormArray。因此,在组件中添加一个使用类型断言并返回长度的方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49095520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档