【发布时间】:2020-02-09 20:29:48
【问题描述】:
我有一个发出事件的服务:
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发送? - …等到下一个新事件发出?
【问题讨论】:
标签: angular rxjs observable angular9 candeactivate