Angular 子属性的更改通知

Angular change notification on subproperty

我的 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 个这样的子元素,我不在乎 "what" 值它变成了什么,只是它确实改变了。

子组件的 .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>

一个好的方法是在值更改的情况下从子组件向父组件发出带有 EventEmitter 的事件。