我正在嘗試創建一個如下所示的 3 級嵌套表單:(下面的 stackblitz 鏈接)
form = this.formBuilder.group({
parentControl1: [''],
parentControl2: [''],
child1Group: this.formBuilder.group({
child1Control1: [''],
child1Control2: [''],
child2Group: this.formBuilder.group({
child2Control1: [''],
child2Control2: [''],
}),
}),
});
有 3 個組件:嵌套的父級、子級 1 和子級 2。上面的表格是在父級內部宣告的。如果我省略 child2,一切正常,但使用 child2 我會收到此錯誤:
Cannot find control with name: 'child2Group'
這是一個堆疊閃電戰,用最少的代碼演示了這個問題:link
謝謝。
uj5u.com熱心網友回復:
在第三級,您應該FormGroupName作為父母提供ControlContainer:
child2.component.ts
viewProviders: [
{
provide: ControlContainer,
useExisting: FormGroupName ,
},
],
分叉的 Stackblitz
更多選擇
如果您不確切知道哪種型別的 ControlContainer 包裝了您的自定義組件(例如您的控制元件在 FormArray 指令中),那么只需使用通用版本:
import { SkipSelf } from '@angular/core';
import { ControlContainer} from '@angular/forms';
@Component({
...,
viewProviders: [{
provide: ControlContainer,
useFactory: (container: ControlContainer) => container,
deps: [[new SkipSelf(), ControlContainer]],
}]
})
export class ChildComponent {}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/532556.html
標籤:有角度的角反应形式
上一篇:匯出一個組件和在另一個模塊中匯入它的模塊有什么區別?
下一篇:為2個不同的螢屏重用組件
