从可观察的角度7获取最后一个发射值

时间:2019-12-11 07:52:47

标签: angular rxjs observable subject

在下次单击上可以观察到可以发射的值,但首先被调用n次,然后又是获取对象的空值。所以我需要写一个if条件,并且如果value不为空则执行一些逻辑。因此,有什么方法可以获取最终完成的值,所以尝试过的rxjs运算符(如last take(1)和行为主题),但是在编写可观察的代码时,它们都不起作用是错误的

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 != "") {
 }
});

试图在此处获取发射值的代码,它首先需要获取最新值,而在此之前它为空。这是其他组件,在下一次单击时,需要将数据保存在个人组件中,以便在条件是否允许的情况下写出是否在其他位置。代码会向对象发送对象,因为它得到对象后如何区分。

2 个答案:

答案 0 :(得分:0)

您可以使用skipWhile运算符检查发出的值是否为空。以下代码块可能会对您有所帮助。

this.shared.savePersonalInfo.pipe(skipWhile(value => !value)).subscribe(res => {
 console.log(res);
});

答案 1 :(得分:0)

您需要使用ReplaySubject。它向每个新订户发出最后一个值