Для моего приложения мне нужно использовать List.json для создания списка (ядро моего приложения). Чтобы разделить этот список между всеми моими компонентами, я решил создать сервис.
В этом сервисе я вызываю свой файл json в конструкторе и использую геттер, чтобы получить этот список в других компонентах. Но когда я вызываю геттер, конструктор не закончился (http get немного медленный) и ничего не возвращает.. (с небольшим тайм-аутом все работает нормально, но это грязно)
Можно ли вызвать геттер после завершения конструктора?
Заранее спасибо !
Мой сервис:
import {Injectable} from "angular2/core";
import {Http, Response, HTTP_PROVIDERS} from 'angular2/http';
@Injectable()
export class listService {
private list;
constructor(http: Http) {
http.get('app/List.json')
.map(res => res.json())
.subscribe(
data => this.list = data
);
}
getValue(){
return this.list;
}
}
Мой компонент, который отображает список:
import {listService} from './listService';
import {Component} from 'angular2/core';
import {RouteConfig, ROUTER_DIRECTIVES, Router} from 'angular2/router';
import 'rxjs/add/operator/map';
@Component({
selector: 'list',
template: `
<h2>Formations </h2>
<ul><li (click)='showItem(item)' *ngFor="#item of list"><span >{{item.Method}}</span></li></ul>
`,
directives: [ROUTER_DIRECTIVES]
})
export class List {
public list: Object[];
constructor(private listService:listService, private _router: Router) {
this.list = this.listService.getValue();
}
showItem(item){
this._router.navigate( ['Item', { id: item.id }] );
}
}