子物业的角度变更通知

时间:2018-10-23 16:04:51

标签: angular angular5 two-way-binding

我的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 :(得分:1)

一种好的方法是,在值发生更改的情况下,使用cowplot从子组件向父组件发出事件。