首页 文章

我不能再使用rxjs 5.5.2的forkjoin

提问于
浏览
10

最近,我决定将使用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'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 回答

  • 26

    不要使用 Observable 修补,直接使用 forkJoin

    import {forkJoin} from "rxjs/observable/forkJoin";
    
    forkJoin(...piecesGrouping$).subscribe()
    
  • 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

    RxJS 6.x使用此导入

    import {forkJoin} from 'rxjs' ;

    正如其他答案所述,它仍然需要作为一个功能使用,因为它现在独立存在 . 文件是here

相关问题