1. 程式人生 > >Angular使用ng build打包報錯 Property 'setControl' does not exist on type 'AbstractControl'.解決方法

Angular使用ng build打包報錯 Property 'setControl' does not exist on type 'AbstractControl'.解決方法

在專案打包出現setControl報錯解決方法:

對於用setControl設定多層級表單的值的用法,會出現這個報錯:

以下是正確的寫法:

get services(): FormArray {
    return this.sltForm.get("Service") as FormArray;
  }

this.services.setControl("SvcInetUrl", this.fb.array(sltService.SvcInetUrl.map(
            url =>
              this.fb.group({
                url: [url.url, Validators.required],
                urlType: [url.urlType, Validators.required]
              })
          )));

如果直接設定SvcInetUrl就會出現報錯:(示例報錯程式碼)

this.sltForm.setControl("Service", this.fb.group({
           SvcInetUrl: this.fb.array(
            sltService.svcInetUrls.map(url =>
               this.fb.group({
                 url: [url.url, Validators.required],
                  urlType: [url.urlType, Validators.required]
               })
             )
            )