Haben Komponente Funktion ausführen nach dem Dienst http.get-Aufruf beendet ist

Ich habe echt Mühe wickeln meinem Kopf herum observablen und Abonnements in angular2. Das problem, das ich derzeit habe ist Folgendes:

Habe ich einen Dienst, der enthält Methoden post und get Daten aus einer API. Der service injiziert wird in eine Komponente, die direkt Aufrufe dieser Methoden werden in den Dienst. Der service ruft dann die Daten und speichert es selbst, aber dann möchte ich zum verarbeiten der Daten innerhalb der Komponente. Ich kann nicht herausfinden, wie man die Komponente, die eine Funktion ausführen, die nach dem service abgerufen und gespeichert und die Daten selbst.

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),
            () => {}
        )
    }
}

Komponente.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/...
  • Dank seiner Nähe aber ich wollte zu halten .abonnieren Sie in den Dienst, seit es Läden, die Informationen, die sich für den späteren Zugriff. Es ist nicht möglich, zwei .abonniert auf ein http.bekommen (Sie nennen es zweimal). Es sei denn, die anerkannten design-pattern haben .abonnieren Sie nur die Komponenten und explizit den service-Variablen aus der Komponente? Ich wollte dem service-und Komponenten-Logik getrennt ist alles.
  • stackoverflow.com/a/34405243/215945 - Antwort-Ketten observablen mit flatMap().
Schreibe einen Kommentar