1
我有表單控件是這樣的:進樣AbstractControlDirective實例作爲@ContentChild定製指令
<input formControlName="myName" dynamicDisable>
然後自定義指令:
@Directive({
selector: '[formControlName][dynamicDisable]
})
export class DynamicDisableDirective implements AfterContentInit {
@ContentChild(AbstractControlDirective) control: any;
ngAfterContentInit(): void {
console.log(this.control);
}
}
我想注入指令,所有者元素爲@ ContentChild給指令。所有者元素可以是任何類型的表單控件,如簡單FormControl,FormGroup甚至FormArray。 FormControlName是AbstractControlDirective的後代。爲什麼控制檯總是記錄'undefined'呢?
注:當我切換AbstractControlDirective爲NgControl這樣的:
@ContentChild(NgControl) control: any;
一切正常,表單控件實例被注入和記錄良好。但是,這種方法只能用於簡單的FormControl,而不能用於組和數組。
如果我提供像這樣的AbstractControlDirective,我收到這個錯誤:'core.es5.js:1020錯誤錯誤:未捕獲(承諾):錯誤:沒有供應商FormGroup!' – witcher
我明白了。我想你必須使用'useMulti'。 –
其實我不確定這是否可行。該方法來自https://stackoverflow.com/questions/39366869/viewchildren-passing-multiple-components/39366891#39366891。另一種方法是注入或查詢它們中的每一個(使用具體類)並檢查找到哪一個。 –