Angular 在订阅之后调用next时,如何在订阅中获取上次发出的on Observable值?

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/

订阅后调用next时,如何订阅并记录最后一个值

以下是在订阅方法或任何其他替代方法中,如何或可能仅获取订阅后发出的最后一个值,即
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)
只记录初始值