2016-08-09 37 views
1

Ich versuche, eine beobachtbare aus einem Array zu erstellen, wie sagt Dokumentation in https://github.com/ReactiveX/rxjs/blob/master/doc/observable.md:beobachtbare aus einem Array funktioniert nicht in Typoskript

import {Observable} from 'rxjs/Observable'; 
let theList = Observable.from(sites); 

aber ich bekomme:

TypeError: Observable_1.Observable.from is not a function 

mein Ziel ist es, Operatoren wie reduce oder über eine beobachtbare Sequenz zu verwenden, wie ein Standard Observable scheint nicht zu unterstützen, wie folgt:

this.theList = new Observable(observer => { 
    // this works 
    observer.next(sites); 
}); 

this.sub = this.theList.reduce(function() { 
    // this is never called 
    return acc; 
}).subscribe(l => { 
    // this is never called 
    this.finalList = l; 
}); 

Der Code kann in dieser PLNR: http://plnkr.co/edit/cKEqtp (src/app.ts) gefunden werden.

Danke!

Antwort

4

Es gibt mehrere Lösungen:

1 - Import spezifische Element

In Ihrem Beispiel, Sie a Importieren Sie nur die Observable, verwenden Sie jedoch die .from() Methode, um eine Observable aus einem Array zu erstellen. Sie müssen also die Methode .from() importieren, wenn Sie sie verwenden möchten. Das Gleiche gilt für den Operator reduce.

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/observable/from'; 
import 'rxjs/add/operator/reduce'; 

2 - Import alle Betreiber und Verfahren

Observable wird von rxjs/Rx gebracht, so dass es auf diese Weise ziehen wird automatisch erhalten Sie alle Operatoren und Verfahren.

import { Observable } from 'rxjs/Rx'; 

Was ist der Unterschied?

Der große Unterschied zwischen diesen beiden Verfahren besteht darin, dass Sie nicht alle Operatoren auf einmal importieren, indem Sie den ersten Ansatz verwenden. Dies kann nützlich sein, wenn Sie im Produktionsmodus arbeiten.

1

Sie importieren die minimale Observable:

import { Observable } from 'rxjs/Observable'; 

so from zu verwenden, müssen Sie diesen Import auch:

import 'rxjs/add/observable/from';