2017-03-08 8 views
1

Ich bin ein bisschen neu zu Observables in Angular2. Von dem, was ich verstehe, werden sie die Änderungen an die subscribers immer dann emittieren, wenn es eine Änderung der Daten gibt. Ich bekomme tatsächlich die erste Antwort von meinem php Backend auf ersten Lauf.Angular 2 Observables Von PHP

Aber wenn ich ändern oder zu aktualisieren Dinge auf der Datenbank the observable cant fetch the next changes again. It will only update upon refresh

Mein Service

checkField(_options : T):Observable<any>{ 
    this.options = _options; 
    let x = this.serialize(this.options); 

    let headers = new Headers({'Content-Type':'application/x-www-form-urlencoded'}); 
    let options = new RequestOptions({ headers: headers}); 

    return this.http.post("http://zodiark.co.nf/php/check_id.php" , x , options).map(this.extractData).catch(this.handleError); 
} 

Meine Komponente

regChecker.checkField(this.checkerOption).subscribe( 
    (data) => { this.testObserver = data; console.log(this.testObserver) 
}) 

Ich brauche nur eine Klarstellung, wenn dies möglich ist.
PS. Danke im Voraus.

Antwort

3

Observable an vielen Orten eingesetzt werden, gibt es viele Wege zum Verständnis Observable aber was Sie Notwendigkeit tun zu verstehen, ist, dass die HTTP-Anfragen ein beobachtbares zurück, die auf Antwort abgeschlossen wird (oder bei einem Fehler), kann es Wenn Ihr Backend entscheidet, mehr Daten zu "senden", wissen Sie nicht, dass Ihr Backend nur Anfragen beantwortet.

Aus diesem Grund ist die Verwendung von Observables für HTTP-Anforderungen fast identisch mit der Verwendung von Promises für HTTP-Anforderungen, mit Ausnahme von Observables, die abgebrochen werden können.

In anderen Anwendungsfällen für Observables wird der Vorteil klarer ... Ich bin sicher, dass Sie viele Beispiele mit DOM-Ereignisobservablen oder reellen Formsteuerelementen von angular2 reactive 'Wert Observables finden werden und so weiter ...

Ich hoffe, ich habe verstanden, was Sie vermisst haben, was los ist :)

+0

Vielen Dank. Ich habe beobachtet, dass Sendezeit mit 'Observable.interval'. Ich verstehe, was du implizieren willst. Ich dachte mir, ich könnte eine Art AngularFire2 machen, ich habe es schon einmal ausprobiert und Änderungen direkt in der Datenbank spiegeln sich auf dem Client wider. Aber nochmal danke. –

+0

Oh ja, Firebase ist so viel mehr als eine einfache HTTP-Anfrage;) – Amit

+0

Problem ist, dass ich die vorhandene Live-Website der Desktop-Version verwenden muss. Also sollte meine Ionic App diese DB mit 'php'> _

Verwandte Themen