Winkel 5 abonnieren und abbestellen Beobachten
Habe ich, um Daten aus zwei abonnieren, aber ich bekomme immer die Daten des ersten.
Habe ich eine Daten-shared service :
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
@Injectable()
export class DataService {
private source = new BehaviorSubject<any>('');
data = this.source.asObservable();
constructor() { }
update(values: any) {
this.source.next(values);
}
}
Vor dem verlassen Suchkomponente, ich nenne update-Methode.
Jetzt bin ich auf die Ergebnisse-Komponente. Ich bekomme freigegebenen Daten, wie :
constructor(private dataSvc: DataService,
private router: Router,
private rideStore: RideStore) { }
ngOnInit() {
this.getData();
}
getData() {
this.subscription = this.dataSvc.data.take(1).subscribe(
data => this.data = data ? data : undefined,
err => console.log(err),
() => this._isValid()
);
}
Meine Frage ist : muss ich auf freigegebene Daten zu abonnieren, um anderen zu beobachten. Zuerst Baue ich ein Objekt Fahrt und nachdem ich den Aufruf der search Methode
search() {
this.rideStore.searchRides(this.ride).subscribe(
rides => {
//this.dataSvc.update(rides);
this.rides = rides;
console.log('results', this.ride);
},
err => console.log('err', err)
);
}
Das problem ist, ich bekomme immer die Daten aus data service und nicht von der api-Aufruf. Die api funktioniert, weil ich abfangen Ergebnisse im store-aber nicht in der Komponente. So Wie ich das stoppen kann, abonnieren Sie zuerst beobachten und "abonnieren" des zweiten ?
this.data = data ? data : undefined
Sie sicherlich bedeuten this.data === data ? data : undefined
Nein, diese Zeile ist gut, ich beeinflussen dat-Objekt oder undefined.Daten
Ok, ich habe mich gerade gefragt, ob es ein Tippfehler ist oder nicht. Ich bekomme es, es ist eigentlich
this.data = (data ? data : undefined)
ja, es ist so; ich versuche, Sie zu verschmelzen oder concat abonnieren, aber es funktioniert nicht
Ich weiß es nicht wirklich. Es klingt einfach zu machen zwei subsciptions, nicht wahr? Wie
this.sub1
und this.sub2
und nur noch zwei subs.InformationsquelleAutor ghuntheur | 2018-01-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verhalten Thema Abonnieren & Abmelden Observablen
Verhalten Fächer sind sehr nützlich beim Austausch von Daten in mehrere Komponenten. Sie können abonnieren Sie so oft wie Sie wollen. Auch Abmelden können Sie es mit der unsubscribe-Methode.
Nehmen wir die oben genannten service und abonnieren Sie diesen Dienst, um Informationen zu bekommen:
Hier, ich habe erklärt, ein Verhalten, unterliegen mit den ersten Wert ein leerer string. Denken Sie daran, dass Sie brauchen, um geben, eine Standard-Wert, um Ihr Verhalten unterliegt, ob es eine leere Zeichenkette oder eine beliebige Anzahl. Danach habe ich initialisiert habe eine beobachtbare Daten mit asObservable() Methode. Und endlich habe ich eine Methode, welche updates das Verhalten unterliegen Quelle Wert mit next() Methode.
Nun ich werde diesen Service in unser Komponente, um Daten aus unserem Verhalten unterliegen.
Hier habe ich injiziert, unsere DataService zu unserer Komponente und ich habe erstellt eine Instanz der DataService dataSvc. Ich habe verwendet, dataSvc, rufen Sie unsere Daten beobachten und abonnieren Sie, dass Daten, die beobachtbaren Daten zu erhalten von unser Verhalten unterliegt. Also die Ausgabe, die ich in die browser-Konsole mit dem folgenden code ist:
So, ich bin diese leere, weil ich verwendet haben ein leerer string als default-Wert für mein Verhalten unterliegen.
Nun um den Wert zu aktualisieren Verhalten Thema, ich habe die update-Methode der dataSvc-service die Aktualisierung der Wert der BehaviorSubject für die leere Zeichenkette, um den neuen Wert ein.
Nun der Wert aktualisiert wurde der von leeren Zeichenfolge abc. Und dies spiegelt sich in jeder Komponente, wo abonnieren dieses BehaviorSubject.
So was, wenn ich will zum abbestellen des Abonnements. So haben wir zum initialisieren von Abonnements als
und dann, Wann immer wir wollen, abbestellen, wir rufen unsubscribe-Methode ISubscription wie diese
So der vollständige code für eine bestimmte Komponente wird so sein:
danke, sehr gute Lösung
Dank Deepak, In meine Komponente.ts-Datei, es sind noch 5 subscribe-Methode. Dann, wie Abmelden diese subscribe-Methode?
auf abonnieren so rufen Sie ngonit und während die "harten" reload wie zu ändern, deaktivieren Sie die Abonnements .
this.ngOnInit()
??InformationsquelleAutor Deepak K