gpt4 book ai didi

Angular2 在构建简单表单时没有 ControlContainer 的提供者

转载 作者:太空狗 更新时间:2023-10-29 17:01:26 25 4
gpt4 key购买 nike

这是我的表格:

app.component.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">  

错误:

   No provider for ControlContainer 
[ERROR ->]<md-input
ngControl="firstName"
placeholder="First name">

如果我将输入移动到应用程序组件本身内,它会起作用,但我的输入是在子组件内。

FORM_DIRECTIVESFORM_PROVIDERS 正在顶级应用程序级别注入(inject)。我完全按照他们的指南做了所有事情。

我还尝试将 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;
}

另见 plunkr https://plnkr.co/edit/ydRAOmFG6FU6lxTonWzj?p=preview

NgControl 指令是子模板中必需的表单标记

另见

关于Angular2 在构建简单表单时没有 ControlContainer 的提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37537157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com