Compte tenu de ce code:abonnement angulaire 2 routage détection de changement de
ngOnInit() {
this.apiService.getBlogPosts().subscribe(blogPosts => {
this.allBlogPosts = blogPosts;
this.changeDetector.detectChanges();
}));
}
Je suis en train de comprendre pourquoi je suis obligé d'utiliser this.changeDetector.detectChanges();
Les circonstances sont que si je charge mon itinéraire blog pour la première fois , mes messages charge bien, si je route
à une autre page (soit un autre component
ou le même "blog" component
pour afficher les détails d'un poste particulier (par exemple 'blog/my-post')) puis je route
retour au "blog "composant à la racine ('blog /'), cette fois, le modèle ne parvient pas à mettre à jour avec les messages. Je peux voir dans mon onglet Inspect
, Network
, que la route pour obtenir les messages fonctionne toujours, console.log
montre que tout semble bien, mais le modèle ne parvient pas à mettre à jour à moins que je force la détection de changement. Est-ce que ce comportement est attendu? Peut-on y remédier? Cela semble étrange ...
Une autre chose à noter est que les deux première fois et 3 fois que je visite le « blog » component
J'utilise:
this.router.navigate([`/${url}`]);
Pour vous rendre ... et ce ne peut pas être aidé ...
Edit: la méthode getBlogPosts()
est dans mon ApiService
que j'injectent dans mon BlogComponent
:
public getBlogPosts() : Observable<BlogPost[]> {
return this.http.get(`${ environment.apiUrl }GetBlogPosts`, { headers: this.headers })
.map((response: Response) => <BlogPost[]>response.json());
}
ce qui est 'this.apiService.getBlogPosts() '? montrez le code pour cela –
Bien sûr, jetez un oeil à l'édition. Votre temps est très apprécié. –
_Je retourne sur le composant "blog" de th_ - comment fais-tu cela? –