[(ngModel)]="item"
- это сокращение от [ngModel]="item" (ngModelChange)="item = $event"
Это означает, что если вы хотите добавить свойство двусторонней привязки к своему компоненту, например
<app-my-control [(myProp)]="value"></app-my-control>
Все, что вам нужно сделать в своем компоненте, это добавить
@Input()
myProp: string;
// Output prop name must be Input prop name + 'Change'
// Use in your component to write an updated value back out to the parent
@Output()
myPropChange = new EventEmitter<string>();
@Input
будет обрабатывать записи и записать новое значение обратно в родительский элемент, просто вызовите this.myPropChange.emit("Awesome")
(вы можете поместить излучение в сеттер для своего свойства, если вы просто хотите, чтобы он обновлялся каждый раз при изменении значения. )
Вы можете прочитать более подробное объяснение того, как / почему это работает здесь.
Если вы хотите использовать имя ngModel
(потому что есть дополнительные директивы, которые привязываются к элементам с ngModel
), или это для элемента FormControl
, а не компонента (AKA, для использования в ngForm
), тогда вам нужно будет поиграть с ControlValueAccessor
. Подробное объяснение того, как создать свой собственный FormControl
и почему он работает, можно прочитать на здесь.
person
Tezra
schedule
06.01.2020