Ich benutze Firebase in Angular2, um ein Objekt zu holen.Async-Datenbindung in Angular2 nimmt Zeit in Anspruch, auch nachdem Daten geladen wurden
import { Component, OnInit } from '@angular/core';
import { AngularFire, FirebaseObjectObservable } from 'angularfire2';
import { ActivatedRoute, Params } from '@angular/router';
@Component({
selector: 'app-example',
templateUrl: './example.component.html',
styleUrls: ['./example.component.css']
})
export class ExampleComponent implements OnInit {
fireObj: FirebaseObjectObservable<any>;
constructor(private af: AngularFire, private route: ActivatedRoute) {
}
ngOnInit() {
this.route.params.forEach((params: Params) => {
let id = params['id'];
this.fireObj = this.af.database.object("/path/" + id);
this.fireObj.subscribe(data => {
if(data.$value !== null) {
console.log(data);
}else {
console.log("failed");
}
});
});
}
}
Und ich bin Bindung fireObj
in der Vorlage:
<p>{{ (fireObj | async)?.title }}</p>
alles wie erwartet funktioniert gut, aber manchmal ist Konsole Anmeldung data
(etwa nach 1 Sekunde), sondern dom/Vorlage wird immer aktualisiert, nachdem 5 -10 Sekunden.
Gibt es einen bestimmten Grund für dieses Verhalten?
Meine einzige Vermutung ist, dass der asynchrone Anruf außerhalb von ngZone geschieht, versuchen Sie, in das –
@SyntacticFructose zu schauen danke für Ihren Vorschlag, ich werde es untersuchen. Aber das Verhalten sollte konsequent bleiben, oder? Manchmal reagiert es normal. Ich habe auch bemerkt, dass das Ändern der 'id' von Pfadparameter zu normalem Verhalten führt, aber das erneute Laden der Seite (für die gleiche ID) einige Male das Problem verursacht. –