В моем приложении Angular 5 есть дочерний компонент, который выполняет двустороннюю привязку, и привязка работает правильно.У меня есть небольшая проблема со знанием об изменении, хотя в родительском контроллере.В родительском элементе я использую дочерний компонент следующим образом:
<app-lab-hazard-classification-question-group
primaryQuestion="Does the lab contain mechanical tools?"
[(primaryValue)]="lab.hazardClassificationDetails.mechanicalExists"></app-lab-hazard-classification-question-group>
Переменная lab
является @Input()
для родительского элемента управления.Когда я оцениваю значение lab.hazardClassificationDetails.mechanicalExists
, оно правильно устанавливается дочерним компонентом.Мне нужно знать, хотя, в родительском элементе управления, когда это значение изменяется.Поскольку сама переменная lab
не изменяется, метод ngOnChanges
фактически не вызывается.
Нужно ли добавлять элемент (change)
в дочерний контроллер и явно связывать его с уведомлениемизменения?Я надеялся на более общий способ, поскольку у меня есть около 10 из этих дочерних элементов, и мне все равно, какое значение он изменил, просто то, что оно действительно изменилось.
Дочерний компонент.Файл ts имеет это:
@Input() primaryValue: boolean;
@Output() primaryValueChange = new EventEmitter();
onPrimaryChanged(): void {
this.primaryValueChange.emit(this.primaryValue);
}
, а HTML-код выглядит примерно так:
<select class="form-control" id="primary" name="primary" required
[(ngModel)]="primaryValue"
(change)="onPrimaryChanged()">
<option [ngValue]="null || undefined">-- Select --</option>
<option [ngValue]="true">Yes</option>
<option [ngValue]="false">No</option>
</select>