Angular2 : Property 'controls' does not exist on type 'AbstractControl' . 通过索引访问格式数组中对象的 .control 时出错

标签 angular typescript

我试图在一个 formarray 中推送另一个 formbuilder,但它给了我一个错误,因为我认为在初始化代码时数组中没有项目,因此没有控件。错误是属性“控件”在

之后类型“AbstractControl”上不存在
(<FormArray>this.loanTypeForm.controls['frequency']).controls[index]

我正在使用 angular 2.0.0-beta.17

let settingsForm: FormArray = new FormArray([]);
      (<FormArray>this.loanTypeForm.controls['frequency']).push(
        this.formBuilder.group({
          'name': [value, Validators.required],
          'settings': settingsForm,
        })
      );
(<FormArray>this.loanTypeForm.controls['frequency']).controls[index].controls['settings'].push(
      this.formBuilder.group({
        'term': [null, Validators.required],
        'eir': [null, Validators.required],
      })
    );

最佳答案

您可以使用['controls']代替.controls,如下所示:

(<FormArray>this.loanTypeForm.controls['frequency']).controls[index]['controls']['settings'].push(...)

但为了简化并提供更多可读性,我建议您将其全部更改为:

const control = this.loanTypeForm.get(`frequency.${index}.settings`) as FormArray;
control.push(...);

关于Angular2 : Property 'controls' does not exist on type 'AbstractControl' . 通过索引访问格式数组中对象的 .control 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41950360/

相关文章:

Angular 2 - 让子组件加载到父组件中(动态创建)

css - 加粗内容需要更长的时间来加载

angular - asp.net webapi 和 Angular 4 之间的通用错误处理

angular - 在渲染 View /模板之前等待 Angular 2 加载/解析模型

sorting - TypeScript 按日期排序不起作用

javascript - 将 javascript 数组中的重复值分组在一起,然后按值名称升序对这些组进行排序

angular - ngStyle 不适用于 Angular2 中的 !important

angular - 在 foreach 循环中订阅多个 observable<boolean>?

typescript 泛型类型不可默认分配

javascript - IOS平台的nativescript应用程序在iPad上完美运行吗?