Avez la composante fonction execute après le service http.obtenez de l'appel est terminé

Je vais avoir vraiment du mal à enveloppant ma tête autour des observables et des abonnements dans angular2. Le problème que je rencontre actuellement est le suivant:

J'ai un service qui contient des méthodes post et get de données à partir d'une API. Le service est injecté dans un composant, qui appelle directement ces méthodes dans le service. Le service récupère ensuite les données et les stocke lui-même, mais je veux la traiter ces données dans le composant. Je ne peux pas travailler sur la façon d'avoir le composant exécuter une fonction après que le service a récupéré et stocké les données lui-même.

service.ts

import { Injectable } from 'angular2/core';    
import { Http } from 'angular2/router';

@Injectable()
export class Service {
    result: Object;

    constructor(http: Http) {
        this.http = http;
    }

    httpGet(url) {
        return this.http.get(url).subscribe(
            result => this.result = result.json(),
            error => console.log(error),
            () => {}
        )
    }
}

composant.ts

import { Component } from 'angular2/core';
import { Service } from './service';

@Component({
    ...
})
export class Component {
    formattedResult: Object;

    constructor(service: Service) {
        this.service = service;
        this.service.httpGet('/api')

        //How do I call format result on service.result only after it is completed?
        this.formatResult(service.result) //Need to execute this after the http call is completed

        //I want something like:
        this.service.httpGet('/api').then(() => formatResult(this.service.result));
    }

    formatResult(result) {
        this.formattedResult = result.map(x => x.length) //For example
    }
}
stackoverflow.com/questions/34739574/...
Merci, sa fin mais je voulais garder .abonnez-vous dans le service, car il stocke l'information elle-même pour un accès ultérieur. Il n'est pas possible d'avoir les deux .s'abonne sur un http.obtenir (on va l'appeler deux fois). À moins acceptée dans le modèle de conception est d'avoir .abonnez-vous uniquement dans les composants et définir explicitement le service des variables de la composante? Je voulais garder le service et composant logique séparés est tout.
stackoverflow.com/a/34405243/215945 - que répondre à des chaînes observables à l'aide de flatMap().

OriginalL'auteur Peter Trotman | 2016-01-12