当前组件中发生事件时,在兄弟组件中调用函数

时间:2018-02-27 12:38:20

标签: angular angular-components

我的应用程序有一个父组件和两个兄弟组件。

<feed>
 <status></status>
 <post></post>
</feed>

我想要实现的是当我在状态组件中写入基本上是文本字段并提交时,我应该将该数据传递到post组件并调用post组件中的另一个函数来更新其视图。但我不知道如何实现这一目标。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您需要实现一个服务并拥有一个事件发射器,您可以将该服务注入两个组件并从status组件发出并在post组件

中监听它

common.service.ts:

@Output() public somethingChanged: EventEmitter<any> = new EventEmitter();

status.component.ts:

someFunc() {
    this.commonService.somethingChanged.emit({
        data: "Dummy Data For Post Component"
    })
}

post.component.ts:

constructor(
    public commonService: CommonService
) {
    this.commonService.somethingChanged.subscribe((data: any) => {
        console.log("Data from status component", data);
    })
}

现在,只要调用状态组件中的someFunc,就会执行post组件中的监听器。您需要确保两个组件共享同一个CommonService实例,即statuspost组件都属于同一个NgModule,如果它们不是CommonService您需要使用共享模块forRoot创建spring-test-dbunit的单例。