Как я могу иметь пользовательские двухсторонние привязки данных сделать форму грязной

1

Я создал компонент с двухсторонней привязкой данных

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?

Теги:
angular
data-binding

2 ответа

1

Вы можете передать форму в мой-пользовательский-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;
}
1

Вы должны использовать ngModel и пользовательский ControlValueAccessor, иначе форма ничего не знает о вашем компоненте, поэтому он не будет помечен как грязный. [(text)]="model.field" - это просто синтаксический сахар.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню