我的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>
答案 0 :(得分:1)
一种好的方法是,在值发生更改的情况下,使用cowplot
从子组件向父组件发出事件。