Угловое уведомление об изменении на объекте - PullRequest
0 голосов
/ 23 октября 2018

В моем приложении 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>

1 Ответ

0 голосов
/ 23 октября 2018

Хорошим подходом может быть отправка события с EventEmitter из дочернего компонента в родительский компонент в случае изменения значения.

...