我不能再使用rxjs 5.5.2的forkjoin

时间:2017-12-12 20:33:57

标签: angular rxjs angular-cli

最近,我决定将使用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”导入它,但它也没有用。

我错过了什么?

3 个答案:

答案 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)

RxJS 6.x使用此导入

import {forkJoin} from 'rxjs';

如其他答案中所述,它仍然需要单独用作函数。文件是here