我不能再使用rxjs 5.5.2的forkjoin

sso*_*nez 15 rxjs angular-cli angular

最近,我决定将使用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();
  });
Run Code Online (Sandbox Code Playgroud)

他们在之前使用rxjs 5.4.3的版本中工作得很好,现在使用rxjs 5.5.2,他们不再使用了,我得到以下错误:

错误:未捕获(在承诺中):TypeError:无法读取未定义的属性'apply'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"导入它,但它也没有用.

我错过了什么?

Max*_*kyi 31

不要使用Observable补丁,forkJoin直接使用:

import {forkJoin} from "rxjs/observable/forkJoin";

forkJoin(...piecesGrouping$).subscribe()
Run Code Online (Sandbox Code Playgroud)


Ara*_*ind 5

您应该将其用作功能

forkJoin(...piecesGrouping$)
  .subscribe((groups) => {
    groups.forEach((group, i) => deliveries[i].groupedPieces = group);

    resolve();
  });
Run Code Online (Sandbox Code Playgroud)

import语句更改为

import { forkJoin } from "rxjs/observable/forkJoin";
Run Code Online (Sandbox Code Playgroud)

这是作为5.2版本的一部分发布的.阅读更改日志


Bea*_*wah 5

RxJS 6.x使用此导入

import {forkJoin} from 'rxjs';

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