2016-04-17 17 views
4

Ich habe Angular 2-Anwendung mit dem folgenden Code:Rx.Observable.prototype.skip ist nicht definiert

nextPage() { 
    this.currentPage += 1; 
    this.files = this._rawFiles 
     .skip((this.currentPage - 1) * 100) 
     .take(100); 
    } 

Es gibt den folgenden Fehler:

ORIGINAL EXCEPTION: TypeError: this._rawFiles.skip is not a function 

this._rawFiles von Angular der produziert wird Http Service, also sollte es RxJS verwenden. Hier ist, wie es aussieht, wenn auf der Konsole ausgegeben:

screenshot

Es scheint ein beobachtbares zu sein, aber nur wenige Methoden vorhanden sind. Warum ist Rx.Observable.prototype.skip(count) nicht drin?

Hier ist, was ein relevanter Teil package.json wie folgt aussieht:

"dependencies": { 
    "@angular2-material/button": "^2.0.0-alpha.1", 
    "@angular2-material/card": "^2.0.0-alpha.1", 
    "@angular2-material/checkbox": "^2.0.0-alpha.1", 
    "@angular2-material/core": "^2.0.0-alpha.1", 
    "@angular2-material/progress-circle": "^2.0.0-alpha.1", 
    "@angular2-material/radio": "^2.0.0-alpha.1", 
    "@angular2-material/sidenav": "^2.0.0-alpha.1", 
    "@angular2-material/toolbar": "^2.0.0-alpha.1", 
    "angular2": "2.0.0-beta.12", 
    "core-js": "^2.1.5", 
    "rxjs": "5.0.0-beta.2", 
    "zone.js": "0.6.6" 
    }, 

Es ist nur eine regelmäßige RxJS, nicht eine Art Light-Version. Sollte es nicht alle Methoden beinhalten?

Antwort

3

Wenn Sie alle Methoden einschließen möchten, verwenden:

import 'rxjs/Rx'; 

Wenn Sie nur skip() Methode aufnehmen möchten, verwenden Sie:

import 'rxjs/add/operator/skip'; 

Rx sein modular konzipiert, so dass nicht alle Code wird in den Speicher geladen.

1

hinzufügen

import 'rxjs/add/operator/skip'; 

Sie auch alle auf einmal

mit dem Import können
import 'rxjs/Rx'; 

aber, dass Niederlagen der Zweck der Modularisierung und bläht unnötig Code Ausgabegröße.