我有一个发出事件的服务:
export class MyService {
private event = new BehaviorSubject<string>('init');
event$ = this.event.asObservable();
constructor() { }
update(): void {
this.event.next('update');
}
accept(): void {
this.event.next('accept');
}
decline(): void {
this.event.next('decline');
}
}
我还有一个CanDeactivateGuard
由组件中的函数触发的:
canDeactivate(): Observable<boolean> {
return this.service.event$.pipe(
map(action => {
return action === 'accept';
})
)
}
现在这一切正常。但我有一个问题:
这将始终返回最后一个事件。所以当什么都没有发生时,它会init
立即发送。如果update()
被调用,它将update
直接发送。
我怎样才能使它工作,以便它:
- ... 等到
accept
或decline
正在发送? - ... 等到下一个新事件发出?