У меня есть служба, которая генерирует события:
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
не будет отправлено? - … ждет, пока не будет отправлено следующее fre sh событие?