如何更改 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
中取消订阅
在 ngOnInit() 中有 Observable<>。
ngOnInit() {
this.products$ = this.someService.getMissingProducts();
}
this.products$ 是 Observable
抱歉这个愚蠢的问题。我不擅长打字和 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