J'essaie de mettre à jour une observable qui est retournée en html à partir d'un appel API. Je me demande si quelqu'un peut m'aider avec ça.Angular 4 Mise à jour observable via http.get
Le html (sur un autre composant)
<common-content [theme]="theme" ></common-content>
et le composant est:
import { Component, OnInit, Input } from '@angular/core';
import { Http, Response } from '@angular/http';
import { ThemeModel } from '../../models';
import 'rxjs/add/operator/toPromise';
@Component({
selector: 'common-content',
template: `<div innerHTML = "{{innerHtml}}"></div>`
})
export class CommonContentComponent implements OnInit {
@Input() page: string;
@Input() theme: ThemeModel;
innerHtml: string;
constructor(private http: Http) {
}
ngOnInit() {
this.populatePage();
}
populatePage(){
let thisUrl = 'myPage.html';
this.http.get(thisUrl).subscribe(f => {
var content = <string>f['_body'];
this.innerHtml = content.replace("{{theme.Name}}", this.theme.name);
}, (error) => {
let e = error;
},() => {
});
}
}
donc au lieu de faire un "remplacer" l'observable devrait simplement mettre à jour automatiquement.
J'ai essayé d'utiliser un abonnement et j'ai aussi essayé une promesse, mais je ne semble pas pouvoir obtenir la syntaxe pour se comporter.
Quelqu'un peut-il aider?
Merci à l'avance
Pourriez-vous montrer le contenu de f – Carsten
juste une puce, au lieu de ' f [ '_body']; 'changer pour' f.text() 'plus sûr –
Je ne comprends pas ce que vous demandez. Qu'essayez-vous d'accomplir? Votre code envoie une requête HTTP, et lorsque la réponse revient, initialise le champ innerHtml de votre composant avec le corps de la réponse (après un remplacement). Quoi d'autre aimeriez-vous réaliser? –