我用双向数据绑定创建了一个组件
class MyCustom2Way{
@Input() text: string;
@Output() textChange = new EventEmitter<string>();
// MyCustom2Way has something in the template that will
// trigger testChange.emit when user interacts with it
}
现在假设我使用MyCustom2Way
这样的形式:
<form action="" #myForm="ngForm">
<my-custom-2-way [(text)]="model.field" name="field"></my-custom-2-way>
</form>
当用户使用MyCustom2Way
进行迭代时,如何让myForm
变为MyCustom2Way
?
答案 0 :(得分:1)
您应该使用ngModel
和自定义ControlValueAccessor
,否则表单对您的组件一无所知,因此不会将其标记为脏。 [(text)]="model.field"
- 只是语法糖。
答案 1 :(得分:1)
您可以将表单传递给my-custom-2-way组件,如下所示
<my-custom-2-way [(text)]="model.field" name="field" [form]="myForm"></my-custom-2-way>
然后在我的自定义组件
中class MyCustom2Way{
@Input() text: string;
@Output() textChange = new EventEmitter<string>();
// MyCustom2Way has something in the template that will
// trigger testChange.emit when user interacts with it
@Input Form:any
this.form._pristine=true;
}