2017-06-25 29 views
5

Używam Rxjs w aplikacji angualr-cli.Błąd rxjs_Observable __. Observable.forkJoin nie jest funkcją?

w viewer.component.ts

//Other Imports 
    import { Observable } from 'rxjs/Observable'; 
    //omitting for brevity 
    export class ViewerComponent implements OnInit, AfterViewInit, OnDestroy { 
    someFunction(someArg){ 
    //omitting for brevity 
    let someArray: any = []; 
    //Add some info 
    Observable.forkJoin(someArray).subscribe(data => { 
       //Do something with data 
      }); 
    } 
    //omitting for brevity 
    } 

otrzymuję błąd i jak

ERROR TypeError: __WEBPACK_IMPORTED_MODULE_2_rxjs_Observable__.Observable.forkJoin is not a function 
    at ViewerComponent.webpackJsonp../src/app/component/viewer.component.ts.ViewerComponent.someFunction(http://localhost:4200/main.bundle.js:4022:73) 
    at http://localhost:4200/main.bundle.js:3951:31 

Ale gdybym importu Rxjs całkowicie (import 'rxjs';) wszystko działa. Żaden błąd. Wygląda na to, że rozumiem, co jest potrzebne. Próbuję również importować rxjs/Observable/forkjoin, ale nic nie pomoże.

Wszelkie wskazówki, jak się z tym pogodzić.

+0

co masz na myśli przez całkowite zaimportowanie? – Sajeetharan

+0

Mam zaktualizowane pytanie. Całkowicie oznacza 'import 'rxjs';' – Ankesh

+0

co to jest someArray? co zawiera? –

Odpowiedz

13

Jak wyjaśniono here, masz dwie opcje:

  1. opcję Importuj wszystkie podmioty jako pojedynczy pakiet
  2. lub importować każdy operator indywidualnie

W pierwszym przypadku należy wykorzystać import jak to:

import Rx from 'rxjs/Rx'; 

Rx.Observable.forkJoin(1,2,3) 

W drugim, takim jak ty s:

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/observable/forkJoin'; 

Uważam, że to, czego szukasz, to druga opcja.

+0

Dziękuję Maximus, myślę, że najlepsza praktyka to druga opcja? –

+0

tak, tworzy minimalny pakiet –

+0

Dziękuję, zadziałało jak urok :) – Ankesh