如何更改 Observable 成员对象字段的值?

How can I change the value of Observable's member object's field?

在 ngOnInit() 中有 Observable<>。

  ngOnInit() {
    this.products$ = this.someService.getMissingProducts();
  }

this.products$ 是 Observable 类型并且 Product 有代码(字符串类型)成员字段。 我想将所有 Product[] 的代码值更改为新值。

抱歉这个愚蠢的问题。我不擅长打字和 angular 所以我试图找到一些解决方案但失败了。

有什么简单的方法吗?

提前致谢。

P.S。我将此代码添加到我的解决方案中。感谢爱德华

this.products$ = this.someService.getMissingProducts().pipe(
    map( product => {
        return product;
    }),
    map((array:Product[]) => {
        return array.map((item:Product) => {
            blabla~
            return { ...item};
        });
    })
);
import { Subscription } from 'rxjs';    

subscription: Subscription;
    
          ngOnInit() {
            this.products$ = this.someService.getMissingProducts();
            this.subscription = this.products$.subscribe((res: any) => {
                this.something = res;
            })
          }

          ngOnDestroy() {
            this.subscription.unsubscribe();
          }

一些注意事项: 这是为打字稿文件制作的实现。 要从可观察对象中获取值,我们必须订阅它。 当我们订阅时,我们存储订阅并在销毁时取消订阅(否则会导致您的应用程序内存泄漏)。

还有异步管道,以防您想在 HTML 模板中直接使用 observable:https://angular.io/api/common/AsyncPipe 例如,如果您的 observable 将输出一个字符串,我们可以像这样使用它(使用您示例中的代码):

<span>Observable value is {{ productName$ | async }}</span>

尽可能从模板中使用可观察对象更好,因此我们不需要存储可观察对象订阅,并记得销毁它以防止内存泄漏。 取消订阅将使用异步管道从 Angular 自动处理。

使用 rxjs map 运算符将 observable 的值从一个转换为另一个。 Link;

 ngOnInit() {
   this.products$ = this.someService.getMissingProducts().pipe(
      map( payload => {
        // Perform the operations you want.
        return NewValue;
      }
   );
 }

通过 pipe 运算符,您可以使用 map 运算符应用自定义逻辑,将可观察值更改为其他值。想要。

假设您在 HTML 模板中使用 async 订阅,则不需要在 class 中订阅。如果您没有在模板中使用异步管道,请务必在 OnDestroy

中取消订阅