我有一个使用Angular 2制作的简单聊天应用程序。我的应用程序与大多数Angular 2应用程序一样,以AppComponent
开头,它使用router-outlet
根据路由呈现子组件。
在ChatComponent
我正在注入AppComponent
。
constructor( @Inject(forwardRef(() => AppComponent)) app: AppComponent) { .. }
我这样做是因为AppComponent
也是聊天服务器的网关。所以无论你在哪个页面,应用程序都会一直收到聊天记录。
AppComponent
类还有一个public usersOnline
数组,它是所有当前在线用户的列表。
这可能不是最性感的方式,但它对我有用。到目前为止一切都很好。
每当我导航到我的ChatComponent
时,我怎样才能设置某种事件监听器,以便当AppComponent
更新usersOnline
属性时,该组件可以执行某些操作?< / p>
答案 0 :(得分:1)
将usersOnline
更改为可观察(或具体而言,主题),然后在ChatComponent
中执行:
app.usersOnline$.subscribe(value => ({value handler code>});
或者,如果您在模板中需要它,那么
<div>Number of online users {(app.usersOnline$ | async).?length}</div>
在AppComponent
中更改分配名称:
this.usersOnline = <some_value>;
到
this.usersOnline$.next(<some_value>);