加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

类型’AbstractControl’Angular 4上不存在属性’controls’

发布时间:2020-12-17 06:52:24 所属栏目:安全 来源:网络整理
导读:我在Angular 4中尝试嵌套的反应形式.它工作正常但是当我尝试构建AOT时它会抛出错误 ‘controls’ does not exist on type ‘AbstractControl’ 我用Google搜索并尝试了一些事情,但没有运气.谁能告诉我如何解决这个问题? div [formGroup]="myForm" div formA
我在Angular 4中尝试嵌套的反应形式.它工作正常但是当我尝试构建AOT时它会抛出错误

‘controls’ does not exist on type ‘AbstractControl’

我用Google搜索并尝试了一些事情,但没有运气.谁能告诉我如何解决这个问题?

<div [formGroup]="myForm">
    <div formArrayName="addresses">
        <div *ngFor="let address of myForm.get('addresses').controls; let i=index" 
                    class="panel panel-default">
            <span *ngIf="myForm.get('addresses').length > 1"
                    (click)="removeAddress(i)">Remove</span>
            <div [formGroupName]="i">
                <mat-form-field>
                    <input matInput formControlName="city" placeholder="city" value="">
                </mat-form-field>
            </div>

        </div>
    </div>
    <a (click)="addAddress()" style="cursor: default"> Add +</a>
</div>

下面的打字稿代码

constructor(private _fb: FormBuilder) {     
}

ngOnInit() {
    this.myForm = this._fb.group({
        addresses: this._fb.array([
            this.initAddress(),])
    });
}
initAddress() {
    return this._fb.group({
        city: ['']
    });
}
addAddress() {
    const control = <FormArray>this.myForm.get('addresses');
    control.push(this.initAddress());
}
removeAddress(i: number) {
    const control = <FormArray>this.myForm.get('addresses');
    control.removeAt(i);
}

解决方法

基于@GünterZ?chbauer评论,首先我改变了

html和打字稿中的myForm.controls [‘addresses’]到myForm.get(‘addresses’)

然后基于@yuruzi评论

将myForm.get(‘addresses’).控件更改为myForm.get(‘addresses’)[‘controls’]

它的工作正常.谢谢@gunter& yuruzi

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读