This is my form:
app.component.html
<form [ngFormModel]="myForm">
<my-child-component></my-child-component>
</form>
app.component.ts
constructor ( private _formBuilder : FormBuilder ) {
this.myForm = _formBuilder.group( {
firstName : ["",Validators.required]
} );
}
my-child-component:
<input type="text" ngControl="firstName">
Error:
No provider for ControlContainer
[ERROR ->]<md-input
ngControl="firstName"
placeholder="First name">
If I move the input inside the app component itself, it'll work, but my input is inside a child component.
FORM_DIRECTIVES
and FORM_PROVIDERS
are being injected at the top app level. I've done exactly everything as per their guides.
I also tried adding FORM_DIRECTIVES
to the child or to app.component with no success.
Alternatively you can use the existing form from the parent by adding this to the child component declaration.
You can use
ngFormControl
directive instead ofngControl
and just pass control variable into childInput
like this:Child.component
See also plunkr https://plnkr.co/edit/ydRAOmFG6FU6lxTonWzj?p=preview
NgControl directive is required form tag within Child template
See also
https://angular.io/docs/ts/latest/cookbook/dependency-injection.html#!#qualify-dependency-lookup-with-optional-and-host-
https://github.com/angular/angular/blob/master/modules/%40angular/common/src/forms/directives/ng_control_name.ts#L106