我有一个Orders数组,想要创建一个可观察值,它给出计算出的价格总和。我正在使用Angular 6。
import { map, reduce, isEmpty } from 'rxjs/operators';
import { Observable } from 'rxjs';
list$: Observable<IOrder[]>;
total$: Observable<number>;
empty$: Observable<boolean>;
ngOnInit() {
this.list$ = this.service.asList.asObservable(); // asList is a BehaviorSubject
this.empty$ = this.list$.pipe(isEmpty());
this.total$ = this.list$.pipe(
map(order => order.price), // <-- Property 'price' does not exist on type 'IOrder[]'
reduce((total, price) => total + price, 0)
);
}
Run Code Online (Sandbox Code Playgroud)
地图运算符中的“订单”是Order []而不是Order。我究竟做错了什么 ?
Property 'price' does not exist on type 'IOrder[]
Run Code Online (Sandbox Code Playgroud)
这意味着您的可观察对象不会一一返回元素流(这就是您在此处期望的结果),而是一次返回整个数组-发出单个结果。指示map属性,立即reduce对数组执行。
会是这样的
this.total$ = this.list$.pipe(
map(order => order.reduce((total, price) => total + price, 0),'
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1498 次 |
| 最近记录: |