在这个场景中,我有3个组件,即组件-1,组件-2,组件-3。 Component-2和Component-3托管在Component-1中 我想在组件-2到组件-3中单击按钮后发送数据。 在此先感谢
答案 0 :(得分:1)
您可以使用Angular 2/4中提供的@Input和@Output装饰器方法来实现此目的。
这些非常简单易用。只需将共享数据保留在组件1中,然后将该数据与组件2和3进行双向绑定。确保在组件2或3中的任何一个数据发生更改时触发更改事件。
//for example component 1
@Component({ ... })
export class Component1{
private data: Data = "some data";
}
//component 2 and 3
@Component({ ... })
export class Component2{
@Input() data: Data = "some data";
@Output() dataChange: EventEmitter ...
ngOnChanges(){
this.dataChange.emit(this.data);
}
}
<component1>
<component2 [(data)]="data"></component2>
<component3 [(data)]="data"></component3>
</component1>
答案 1 :(得分:0)
使用服务在组件之间共享数据。
SERVICE
export class MyService {
public someVariable: string = ""
// .....
}
组件1(打字稿)
import { MyService } from "./myService.service"
// ......
constructor(public ms: MyService) {}
setValue(val){
this.ms.someVariable = "Hello!" // Alter the variable in the service
}
COMPONENT 2(打字稿)
import { MyService } from "./myService.service"
// ......
constructor(public ms: MyService) {}
组件2(HTML)
<h1>{{ ms.someVar }}</h1> <---- Will print Hello! in your HTML markup