我为我的应用程序创建了一个通知服务,如下所示:
export class NotificationService {
private subject = new Subject<Notification>();
constructor() {}
getNotification(): Observable<any>{
return this.subject.asObservable();
}
success(title: string, message: string){
this.notif(NotificationType.SUCCESS, title, message);
}
error(title: string, message: string){
this.notif(NotificationType.ERROR, title, message);
}
technicalError(title:string, message: string){
this.notif(NotificationType.TECHNICAL_ERROR, title, message);
}
info(title: string, message: string){
this.notif(NotificationType.INFO, title, message);
}
warning(title: string, message: string){
this.notif(NotificationType.WARNING, title, message);
}
notif(type: NotificationType, title: string, message: string){
this.subject.next(<Notification>{ type: type, title: title, message: message});
}
下面是我如何使用此服务的示例:
this.notificationService.success("Suppression", "L'enregistrement a été supprimée !");
由于我有一个在所有组件之间共享的组件,即头部,所以我在它的ngoninit函数中有一个通知服务主题的订阅:
this.notificationService.getNotification().subscribe((notification: Notification) => {
this.notification.create(NotificationType[notification.type], notification.title, notification.message);
});
第一次运行应用程序时,当我调用某个notificationservice函数时,subscribe函数内的代码执行一次,但之后subscribe函数内的代码执行多次。
我怎么解决这个问题?