Angular 6:计算列表的总和(可观察)

Wol*_*359 3 rxjs angular

我有一个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。我究竟做错了什么 ?

Ant*_*sss 5

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)