Angular 角度2中的组件通信

Angular 角度2中的组件通信,angular,Angular,可能很简单,但我快疯了。 第一个组件是父组件 导出类公司组件{ 公司:公司[]; 所示公司:公司[]; } 建造商(私人公司服务:公司服务){ 这是._companiesService.getCompanies().subscribe(数据=>{ this.companys=JSON.parse(data.text()); this.companiesshow=this.companies; }); } 模板如下所示: 。。 {{company.name} .. 最后,孩子们是这样的: 导出

可能很简单,但我快疯了。 第一个组件是父组件

导出类公司组件{
公司:公司[];
所示公司:公司[];
}
建造商(私人公司服务:公司服务){
这是._companiesService.getCompanies().subscribe(数据=>{
this.companys=JSON.parse(data.text());
this.companiesshow=this.companies;
});
}
模板如下所示:

。。
{{company.name}
..
最后,孩子们是这样的:

导出类PaginationComponent实现OnChanges{
@输入()数据:对象[];
@Input()dataShown:Object[];
ngOnChanges(){
如果(this.data!=null&&this.data.length>0){
this.dataShown=this.data;
console.log(this.dataShown);
}
}
}
Console.log为我提供正确长度的dataShown,但在父级中总是未定义/长度为零。。。为什么? 谢谢

用于“双向绑定”,如

[(数据显示)]=“显示的公司”
要工作,您的子组件需要

@Input()数据显示:对象[];
@Output()dataShownChange:EventEmitter=neweventemitter();
从子级向父级发送更新的位置,如

this.dataShownChange.emit([{x:'y'}]);
如需了解“双向绑定”,请参见

[(数据显示)]=“显示的公司”
要工作,您的子组件需要

@Input()数据显示:对象[];
@Output()dataShownChange:EventEmitter=neweventemitter();
从子级向父级发送更新的位置,如

this.dataShownChange.emit([{x:'y'}]);

另请参见

Ok,但我无法在ngOnChanges()方法中发出错误,如“Expression has change after it checked.”因此,您希望在数据发生更改时发出
dataShownChange
?确切的错误消息是什么?我简化了代码,但是公司列表来自http请求,因此当应用程序分页生成时,公司为空。我订阅http请求,然后将json映射到一个数组(公司)。当数组被填充时,组件应用程序分页必须将数组中的公司进行切片,并将其放入companies中。如图所示,我通过方法NgOnChanges截获此事件(公司不为空),但此方法无法通知父级。所以我不知道我要做什么:(抱歉,我不理解您的上一条评论或这与问题的关系。您收到的确切错误消息是什么?error_handler.js:50异常:./CompaniesComponent类CompaniesComponent-内联模板中的错误:11:16原因:表达式在检查后已更改。以前的值:“未定义”。当前值:“[object object]“.Ok,但我无法在ngOnChanges()方法中发出,而不会得到类似“表达式在检查后已更改”这样的错误。”所以你想在
数据更改时发出
dataShownChange
吗?确切的错误消息是什么?我简化了代码,但公司列表来自http请求,因此当应用程序分页生成时,公司为空。我订阅http请求,然后将json映射到一个数组(公司)。当阵列填充后,组件应用程序分页必须将阵列公司切片并将其放入公司中。如图所示,我通过NgOnChanges方法拦截此事件(公司不为空),但此方法无法通知父级。因此我不知道我必须做什么:(抱歉,我不理解您的上一条评论或这与问题的关系。您收到的确切错误消息是什么?error_handler.js:50异常:./CompaniesComponent类CompaniesComponent-内联模板中的错误:11:16原因:表达式在检查后已更改。以前的值:“未定义”。当前值:“[object object]'.