当您为子组件分配原始值(字符串,数字,布尔值)时创建父组件和子组件时,您必须使用eventemitter创建@Input和@Output以获得双向通信。到目前为止一切都很好。
但是当我仅使用@Input将复杂的Object分配给我的子组件时,我在Object中更改了一些值,那么我也会在Parent组件中看到这些更改。因为我正在编辑一个对象引用。
所以我的问题是,我应该避免在我的子组件中设置复杂对象,还是这是一种不好的做法?是否有任何可能性或者可以像“双向数据绑定”一样使用它。
答案 0 :(得分:1)
使用relvant属性创建模型
export interface InputModel {
a:string;
b:number;
c:boolean;
}
创建此类型的@Input属性
@Input() obj : InputModel
通过这种方式对Input对象的任何属性进行任何更改。将触发ngOnChanges()
,可用于处理您的操作