Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度2组件与对象的父子通信_Angular_Data Binding - Fatal编程技术网

Angular 角度2组件与对象的父子通信

Angular 角度2组件与对象的父子通信,angular,data-binding,Angular,Data Binding,当您为子组件指定基本值(字符串、数字、布尔值)时,创建父组件和子组件时,您必须使用eventemitter创建@Input和@Output以获得双向通信。到目前为止还不错 但是,当我仅使用@Input将复杂对象指定给子组件,并在对象内部更改一些值时,我也会在父组件中看到这些更改。因为我正在编辑对象引用 所以我的问题是,我应该避免在我的子组件中设置复杂的对象,还是这是一种糟糕的做法?是否存在任何问题,或者是否可以像“双向数据绑定”一样使用它 创建具有相关属性的模型 export interface

当您为子组件指定基本值(字符串、数字、布尔值)时,创建父组件和子组件时,您必须使用eventemitter创建@Input和@Output以获得双向通信。到目前为止还不错

但是,当我仅使用@Input将复杂对象指定给子组件,并在对象内部更改一些值时,我也会在父组件中看到这些更改。因为我正在编辑对象引用


所以我的问题是,我应该避免在我的子组件中设置复杂的对象,还是这是一种糟糕的做法?是否存在任何问题,或者是否可以像“双向数据绑定”一样使用它

创建具有相关属性的模型

export interface InputModel {
      a:string; 
      b:number;
      c:boolean;
}
创建此类型的@Input属性

@Input() obj : InputModel

通过这种方式,可以更改输入对象的任何属性
ngOnChanges()
将被触发,可用于处理您的操作

是的,这很清楚,但我是否需要注意任何问题?还是可以用这个?因为我有一个“简单的”伪“双向数据绑定”