J'ai un service qui a cette méthode:
export class TestModelService {
public testModel: TestModel;
constructor( @Inject(Http) public http: Http) {
}
public fetchModel(uuid: string = undefined): Observable<string> {
if(!uuid) {
//return Observable of JSON.stringify(new TestModel());
}
else {
return this.http.get("http://localhost:8080/myapp/api/model/" + uuid)
.map(res => res.text());
}
}
}
dans le constructeur du composant, je m'abonne comme ceci:
export class MyComponent {
testModel: TestModel;
testModelService: TestModelService;
constructor(@Inject(TestModelService) testModelService) {
this.testModelService = testModelService;
testService.fetchModel("29f4fddc-155a-4f26-9db6-5a431ecd5d44").subscribe(
data => { this.testModel = FactModel.fromJson(JSON.parse(data)); },
err => console.log(err)
);
}
}
Cela fonctionne si un objet provient du serveur mais j'essaie de créer un observable qui fonctionnera avec l' subscribe()
appel donné pour une chaîne statique (cela se produit lorsque testModelService.fetchModel()
ne reçoit pas d'uuid), donc il y a une gestion transparente dans les deux cas.