У меня возникают настоящие проблемы, обворачивающие мои наблюдатели и подписки в angular2. В настоящее время проблема заключается в следующем:
У меня есть служба, которая содержит методы для публикации и получения данных из API. Услуга вводится в компонент, который напрямую вызывает эти методы в службе. Затем служба извлекает данные и сохраняет их сама, но затем я хочу обработать эти данные внутри компонента. Я не могу понять, как выполнить компонент после выполнения службы и сохранить данные.
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),
() => {}
)
}
}
component.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
}
}