Angular 在订阅之后调用next时,如何在订阅中获取上次发出的on Observable值?
订阅后调用next时,如何订阅并记录最后一个值 以下是在订阅方法或任何其他替代方法中,如何或可能仅获取订阅后发出的最后一个值,即Angular 在订阅之后调用next时,如何在订阅中获取上次发出的on Observable值?,angular,rxjs,Angular,Rxjs,订阅后调用next时,如何订阅并记录最后一个值 以下是在订阅方法或任何其他替代方法中,如何或可能仅获取订阅后发出的最后一个值,即123?我使用了last(),但它根本不记录任何值。我希望订阅只运行一次并使用最后一个值 import { Component, Input, OnInit } from '@angular/core'; import { BehaviorSubject, Observable } from 'rxjs'; import { last } from 'rxjs/
123
?我使用了last()
,但它根本不记录任何值。我希望订阅只运行一次并使用最后一个值
import { Component, Input, OnInit } from '@angular/core';
import { BehaviorSubject, Observable } from 'rxjs';
import { last } from 'rxjs/operators';
@Component({
selector: 'hello',
template: `
<h1>Hello {{ name }}!</h1>
`
})
export class HelloComponent implements OnInit {
@Input() name: string;
subject = new BehaviorSubject<any>({});
ngOnInit() {
this.subject.next(456);
this.getData()
// .pipe(last())
.subscribe(console.log);
// this next is being done in another component after subscription so putting it here to mimic the behavior
this.subject.next(123);
}
getData(): Observable<any> {
return this.subject.asObservable();
}
}
从'@angular/core'导入{Component,Input,OnInit};
从“rxjs”导入{BehaviorSubject,Observable};
从“rxjs/operators”导入{last};
@组成部分({
选择器:“你好”,
模板:`
你好{{name}}!
`
})
导出类HelloComponent实现OnInit{
@Input()名称:string;
subject=新的行为subject({});
恩戈尼尼特(){
本主题下一篇(456);
这个文件名为getData()
//.pipe(最后一个())
.subscribe(console.log);
//下一步是在订阅后的另一个组件中完成的,因此将其放在此处以模拟行为
本.主题.下(123);
}
getData():可观察{
返回此.subject.asObservable();
}
}
您不能使用last()
,因为主题当前未完成。您需要调用主题的complete()
,才能使用它:
ngOnInit(){
本主题下一篇(456);
这个文件名为getData()
.pipe(最后一个())
.subscribe(console.log);
本.主题.下(123);
this.subject.complete();
}
您的您的示例已经记录了
123
,不清楚您在这里想要实现什么。很抱歉,编辑我的问题,我只想打印123
只订阅最后发出的值,这就是为什么我尝试使用last()
如果我正确理解您的意思,take(1)
应该可以it@MrkSef否take(1)
只记录初始值