注文の配列があり、計算された価格の合計を提供するオブザーバブルを作成します。私は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)
);
}
マップ演算子内の「order」は、OrderではなくOrder []です。 私は何を間違えていますか?
関連した質問
- 更新されたフィールドが1つだけのオブジェクトをストリームに出力できますか?
- Angular <2x observableの変更に対応する方法
- 監視可能な配列がngrxで空です
- 変更が発生しても配列が更新されないAngular10
- メソッドパラメータがfalseの場合にサービスluanchをnullまたは0にする方法
- 外部APIを呼び出すこのAngularサービスメソッドからPromiseをどの程度正しく返すのですか?
- プロパティへの角度のある観察可能なサブスクライブ
- Angular8でいくつかのajaxリクエストのステータスを検出するための最良の専門的な方法は何ですか?
- httpから返されたデータを同じ構造のtypescriptオブジェクトに割り当てることができません
- WebSocketSubjectからのBlobオブジェクトの逆シリアル化
それは、あなたのobesrvableが要素のストリームを一つずつ返さないことを意味します(そして、あなたがここで期待することです)が、配列全体を一度に-単一の結果が出力されます。
map
のInsteed プロパティにreduce
を実行します すぐにアレイに。このようなものになります