我有一個MessageService類,它有一個setMessage方法觸發一個事件,還有一個MainComponent類,它是監聽這個事件的所有組件的父組件。所以事件將會發生火災,MainComponent會抓住它並且一切正常。但有一個問題。當用戶更改組件時,例如:從儀表板組件導航到用戶組件時,消息自動銷燬。但這裏不會發生這種情況,消息仍然會顯示給用戶。我寫了一個計時器的時間後刪除留言,但我想知道是否有實現這個還是不Angular 2 Better Message Service
這是我的信息服務類更好的辦法:
import {ReplaySubject} from 'rxjs/ReplaySubject';
export class MessageService{
public messageSource;
public messageEvent;
constructor(){
this.messageSource = new ReplaySubject(1);
this.messageEvent = this.messageSource.asObservable();
}
public setMessage(message){
this.messageSource.next(message);
window.setTimeout(()=>{
this.destruct();
},5000);
}
public destruct(){
this.messageSource.next(null);
}
,這是我的主要組件類:
export class MainComponent extends BaseComponent{
constructor(public router:Router,public authService:AuthService,public messageService:MessageService){
super(router);
this.messageService.messageEvent.subscribe(msg => {
this.message = msg;
});
}
public logout(){
this.authService.removeToken();
this.permission.user = null;
this.router.navigate(['/']);
}
}
你shoudl切換您的打字稿 – Walfrat
JavaScript代碼,你可以給更多的細節? –