gpt4 book ai didi

Angular CanDeactivateGuard : How to wait for the right or the next value of an Obersavble?

转载 作者:行者123 更新时间:2023-12-04 10:36:47 24 4
gpt4 key购买 nike

我有一个发出事件的服务:

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直接地。

我怎样才能使它起作用,以便它:
  • ... 等到 acceptdecline是发送?
  • ...等到下一个新事件发出?
  • 最佳答案

    您可以跳过 BehaviorSubject 中的第一次发射与 skip :

    this.service
    .pipe(
    skip(1),
    filter(a => ['accept', 'decline'].includes(a))
    )

    关于 Angular CanDeactivateGuard : How to wait for the right or the next value of an Obersavble?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60141007/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com