这是我的表格:
应用程序组件.html
<form [ngFormModel]="myForm">
<my-child-component></my-child-component>
</form>
应用程序组件.ts
constructor ( private _formBuilder : FormBuilder ) {
this.myForm = _formBuilder.group( {
firstName : ["",Validators.required]
} );
}
我的孩子组件:
<input type="text" ngControl="firstName">
Error:
No provider for ControlContainer
[ERROR ->]<md-input
ngControl="firstName"
placeholder="First name">
如果我将输入移动到应用程序组件本身内部,它会起作用,但我的输入位于子组件内部。
FORM_DIRECTIVES
and FORM_PROVIDERS
正在顶级应用程序级别注入。我完全按照他们的指南做了一切。
我也尝试添加FORM_DIRECTIVES
给孩子或 app.component 没有成功。
您可以使用ngFormControl
指令而不是ngControl
然后将控制变量传递给子进程Input
像这样:
<form [ngFormModel]="myForm">
<my-child-component [control]="myForm.controls.firstName"></my-child-component>
</form>
子组件
@Component({
selector: 'my-child-component',
template: `
<input type="text" [ngFormControl]="control">
`,
directives: [FORM_DIRECTIVES]
})
export class Child {
@Input() control: Control;
}
另请参阅笨蛋https://plnkr.co/edit/ydRAOmFG6FU6lxTonWzj?p=preview https://plnkr.co/edit/ydRAOmFG6FU6lxTonWzj?p=preview
NgControl 指令是子模板中必需的表单标签
也可以看看
https://angular.io/docs/ts/latest/cookbook/dependency-injection.html#!#qualify-dependency-lookup-with-optional-and-host- 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 https://github.com/angular/angular/blob/master/modules/%40angular/common/src/forms/directives/ng_control_name.ts#L106
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)