我正在 angular2 开发应用程序,这里我使用消息广播将数据从一个组件更新到另一个组件。
这是代码, 的 message_event.ts
import {Injectable} from '@angular/core';
import {Observable} from 'rxjs/Observable';
import {Broadcaster} from './broadcaster';
@Injectable()
export class MessageEvent {
constructor(private broadcaster: Broadcaster) {}
fire(data: string): void {
this.broadcaster.broadcast(MessageEvent, data);
}
on(): Observable<string> {
return this.broadcaster.on<string>(MessageEvent);
}
}
broadcaster.ts
import {Subject} from 'rxjs/Subject';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/map';
interface BroadcastEvent {
key: any;
data?: any;
}
export class Broadcaster {
private _eventBus: Subject<BroadcastEvent>;
constructor() {
this._eventBus = new Subject<BroadcastEvent>();
}
broadcast(key: any, data?: any) {
this._eventBus.next({key, data});
}
on<T>(key: any): Observable<T> {
return this._eventBus.asObservable()
.filter(event => event.key === key)
.map(event => <T>event.data);
}
}
我已在此活动中注册/订阅了其中一个组件。
ngOnInit() {
// this.registerStringBroadcast();
this.registerTypeBroadcast();
this.loadId();
}
registerTypeBroadcast() {
this.message_event.on().subscribe(message => {
// alert("true");
this.isUserLogin = true;
this.loadId();
})
这里我需要检查事件是否已经注册。 要么 有没有办法销毁/取消订阅此消息事件。
请帮助我以上。
提前致谢。
答案 0 :(得分:1)
您可以调用订阅对象的<table border="1">
<tr>
<td> cell 11 </td> <td> cell 21</td>
</tr>
<tr>
<td> cell 12 </td> <td> cell 22</td>
</tr>
</table>
函数。
您需要将订阅分配给对象,然后在您不再需要时调用取消订阅。
示例:
unsubscribe()