【发布时间】:2020-04-04 10:58:15
【问题描述】:
在下一次单击时,将值发射到 observable 能够获取但它首先被调用 n 次,它在下一次获取对象时获取空值。所以我需要写一个 if 条件,如果值不为空,然后执行一些逻辑。那么有没有办法获得最终完成的值所以尝试了像 last take(1) 和行为主题这样的 rxjs 运算符,但是它们都没有工作附加代码 sn-p 在编写 observable 时有什么问题
savePersonalInfo$ = new Subject<any>();
get savePersonalInfo() {
return this.savePersonalInfo$.asObservable();
}
我的服务文件看起来像这样,其中尝试使用行为主题创建主题但没有运气。
onClickedNext(){
// this.isContinueClicked = true;
// this.shared.coapplicantForm = this.register;
this.shared.isFromNext = true;
this.shared.savePersonalInfo$.next({value: 'clicked'});
}
在下一次点击事件中发出值,因此它来自导航组件。
this.shared.savePersonalInfo.subscribe(resp => {
if (resp.value != "") {
}
});
代码试图在此处获取发出的值,它最初需要获取最新值它变空这是另一个组件,在下次单击时需要将数据保存在个人组件中,因此如果条件数据是否可用,则在其他地方写入它发送对象的代码在这种情况下如何区分,因为它得到了对象。
【问题讨论】:
-
看起来您可以只使用
filter(Boolean)、skip(1)或filter(whatever logic)运算符。 -
@martin 如果没有这些过滤器,是否有任何方法,如果每次从 api 获取大对象,只是对象中的一个键更改在这种情况下如何做
-
您能在 stackblitz 中分享您的问题吗?
-
如果我理解你是正确的,只要有点击事件,你就会订阅你的最后一个 sn-p。这可能会导致您在订阅之前释放您的价值。您应该明确地在 stackblitz 链接中发布一个完整的示例。您可能想使用 shareReplay(num) 运算符,但很难说
标签: angular rxjs observable subject