最近,我决定将使用Angular的“快速入门”从头创建的大项目迁移到使用Angular CLI 1.5.5的版本。现在,我正在解决出现的各种问题,我无法解决这个问题。
我读到最好使用rxjs的lettable操作符,我做了它并且效果很好。但是,我也有这些代码行:
import { Observable } from "rxjs/Observable";
import "rxjs/add/observable/forkjoin";
...
let piecesGrouping$: Observable<IGroupedPiece[]>[] = deliveries.map(delivery => this._pieceService.getGroupedPieces(delivery.pieces));
Observable
.forkJoin(...piecesGrouping$)
.subscribe((groups) => {
groups.forEach((group, i) => deliveries[i].groupedPieces = group);
resolve();
});
他们在使用rxjs 5.4.3的先前版本中运行得很好,现在使用rxjs 5.5.2,他们不再使用了,我收到以下错误:
错误错误:未捕获(在承诺中):TypeError:无法读取属性 'apply'of undefined TypeError:无法读取属性'apply' 未定义
我试图用piecesGrouping$[0], piecesGrouping$[1]
替换点差运算符,因为错误本身没有说明forkJoin
,我得到:
错误错误:未捕获(在承诺中):TypeError: WEBPACK_IMPORTED_MODULE_8_rxjs_Observable .a.forkJoin不是函数TypeError: WEBPACK_IMPORTED_MODULE_8_rxjs_Observable .a.forkJoin不是函数
所以看起来我以错误的方式导入forkJoin
。我试图从“rxjs / observable / forkJoin”导入它,但它也没有用。
我错过了什么?
答案 0 :(得分:30)
请勿使用Observable
补丁,直接使用forkJoin
:
import {forkJoin} from "rxjs/observable/forkJoin";
forkJoin(...piecesGrouping$).subscribe()
答案 1 :(得分:5)
您应该将其用作功能
forkJoin(...piecesGrouping$)
.subscribe((groups) => {
groups.forEach((group, i) => deliveries[i].groupedPieces = group);
resolve();
});
import语句更改为
import { forkJoin } from "rxjs/observable/forkJoin";
这是作为5.2
版本的一部分发布的。阅读 change log
答案 2 :(得分:5)