Я создал компонент с двухсторонней привязкой данных
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
?
Вы можете передать форму в мой-пользовательский-2-компонентный компонент, как это
<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;
}
Вы должны использовать ngModel
и пользовательский ControlValueAccessor
, иначе форма ничего не знает о вашем компоненте, поэтому он не будет помечен как грязный. [(text)]="model.field"
- это просто синтаксический сахар.