イベントをトリガーするsetMessageメソッドと、このイベントをリッスンするすべてのコンポーネントの親コンポーネントであるMainComponentクラスを持つMessageServiceクラスがあります。イベントは火災になり、MainComponentはそれをキャッチし、すべてがOKです。 1つの問題があります。ユーザーがコンポーネントを変更したときなどに必要な情報:ダッシュボードコンポーネントからユーザーコンポーネントにナビゲートする。メッセージは自動的に破棄される。しかしここでこれは起こらず、メッセージは引き続きユーザーに表示されます。私は時間の後にメッセージを削除するようにタイマーを書いたが、私はこれか角2メッセージサービスの改善
これは私のメッセージサービスクラスで実装するためのより良い方法があるかどうかを知りたい:
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(['/']);
}
}
あなたはより詳細な情報を与えることができますtypescriptです – Walfrat
ためのJavaScriptのタグを切り替えるshoudl? –