![](/img/trans.png)
[英]No provider for ControlContainer and No provider for ControlContainer
[英]No provider for ControlContainer when a child component has a ngModelGroup
我似乎無法弄清楚這一點,它根本就不起作用。
這是由Pascal Prekht編寫的原始plunker ,它是模板驅動形式的解釋:
這是我的fork是完全相同的東西,除了我試圖加載其中一個字段集作為一個單獨的子組件。
這是代碼:
@Component({
selector:'form-group-component',
template:`
<fieldset ngModelGroup="anotherAddress">
<div>
<label>Street2:</label>
<input type="text" name="street2" ngModel>
</div>
</fieldset>
`
})
export class FormGroupComponent{
}
@Component({
selector: 'form-component',
directives:[FormGroupComponent],
template: `
<form #form="ngForm">
<form-group-component></form-group-component>
<fieldset ngModelGroup="address">
<div>
<label>Street:</label>
<input type="text" name="street" ngModel>
</div>
<div>
<label>Zip:</label>
<input type="text" name="zip" ngModel>
</div>
<div>
<label>City:</label>
<input type="text" name="city" ngModel>
</div>
</fieldset>
</form>
`
})
export class FormComponent {
}
因此,在切割其中一個feildset並將其加載到單獨的指令中之后,它將不再起作用!
有幾個封閉的問題,但沒有它們正在發揮作用。
我知道這是一個老問題。 但是將來有人會發現它很有用。 我有同樣的問題,看起來當組件有一個沒有formGroup
指令的<form>
標簽並且模塊正在導入ReactiveFormModule
。 因此,要解決此問題,請確保所有<form>
標記都具有formGroup
指令(如果其模塊正在導入ReactiveFormModule
。
如果您正在使用模板驅動的表單 ,並且具有表單的一部分的子組件 ,並且(最終)想要在該子組件中使用ngModelGroup ,則需要向視圖提供ControlContainer 。
快速解決方案
ControlContainer, NgForm
子組件中的import { ControlContainer, NgForm } from '@angular/forms';
@Component
裝飾器中的viewProviders
: ```
@Component({
selector: 'sub-question',
templateUrl: '...',
styleUrls: ['...'],
viewProviders: [ { provide: ControlContainer, useExisting: NgForm } ]
})
在app.modules.ts上快速導入
import { ReactiveFormsModule } from '@angular/forms';
@NgModule({
imports: [
ReactiveFormsModule],})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.