Ich versuche, einige reactiveX in meinem http-Code zu verwenden. Um dies zu tun, erstelle ich einen Betreff und versuche, die onNext-Funktion aufzurufen, aber ich bekomme eine Fehlermeldung, dass subject.onNext keine Funktion ist.Subject.onNext ist keine Funktion
html:
<input #search (input)="generateSuggestions($event.target.value)">
ts:
import { Jsonp, Response } from 'angular2/http';
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject'
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/debounce';
import { Injectable } from 'angular2/core';
@Injectable()
export class SearchService {
queryStream = new Subject();
generateSuggestions(query: string) {
this.queryStream.onNext(query)
.debounce(500)
.map(
query => this.jsonp.request(`http://urlendpoint/${query}`)
.map((res: Response) => res.json())
.subscribe(results => console.log(results));
)
}
}
var queryStream = new Subject();
ORIGINAL AUSNAHME: Typeerror: this.queryStream.onNext ist keine Funktion
Alle meine Ebene http Funktionen arbeiten (dies. jsonp.request (URL/Abfrage) .map(). subscribe()), aber der onNext-Operator funktioniert nicht. Ich habe auch Probleme beim Importieren von flatMap, die nicht im gleichen 'rxjs/add/operator/...' Ordner wie map und debunce zu sein scheint.
Das liegt daran, dass 'onNext()' Teil des alten RxJS (RxJS 4) ist, während im neuen RxJS (RxJS 5) die Methode 'next() ' –
WARUM EINE BRECHENDE ÄNDERUNG ??? !! ICH WURDE MEINE HAARE HERAUSZIEHEN ... – koo9