在角度2中,我有2个父组件需要发出和收听,但我的代码无法正常工作
我基本上有一个父组件需要对另一个父组件进行广播,以便该组件可以自行更新。
这是我发布的组件:
@Output() userUpdated = new EventEmitter();
userUpdated = "userUpdated($event)";
userUpdated.emit("test");
这是我的另一个父组件,它正在侦听emit:
userUpdated(item) {
this.getAllUnReadMessages();
}
结果是很多控制台错误。
但问题是他们希望我将发射器支付给我在这种情况下无法做的组件。
我只需要对另一个组件进行基本发射或广播。 它变得很简单。
我只是为父子对子组件工作。
但我现在需要它为父母工作。
答案 0 :(得分:3)
好的,这里是plunker:http://plnkr.co/edit/qMnXG7oxF3SdTptKHUen?p=preview
在stackoverflow上有很多关于这个问题的答案,你是不是第一次发布这个问题..
您将首先为您的应用制作共享服务
import {Subject} from 'rxjs/Subject';
@Injectable()
export class MyService {
public invokeEvent:Subject<any> = new Subject();
constructor() {}
}
然后在您的模块中提供它,以便组件将共享此组件的相同实例(单例)
@NgModule({
imports: [ BrowserModule ],
providers: [MyService]
declarations: [ App, AnotherApp ],
bootstrap: [ App ]
})
export class AppModule {}
从这一点开始,关于组件中Subject
的使用情况。
如果您要发出活动,请使用next
this._myService.invokeEvent.next(this.counter++);
并接收/收听,只需订阅:
this._myService.invokeEvent.subscribe((value) => {
console.log(value);
this.name = value;
});