如何在构造函数Angular 2上使用Async调用注入服务

时间:2015-12-30 16:09:31

标签: javascript http typescript promise angular

这就是问题:我有一个服务在构造函数中发出HTTP请求:



    constructor(public http: Http, public geolocation: Geolocation) {
        this.http = http;
        this.geolocation = geolocation;
        //Http request... this will set variable forecast of the class when complete.
        this.getForecast(16);
    }




然后我在这样的组件中注入该服务:



    constructor(public connector: ApiConnector) {
         this.forecast = connector.forecast;
    }




如果我尝试在组件装饰器上使用组件类的预测成员,就像我在这里一样:



@Component({
    selector: 'app',
    directives: [MainForecast, DailyForecast],
    template: `
        <main-forecast [main-weather]="forecast"></main-forecast>
        <daily-forecast [weather-list]="forecast.list"></daily-forecast>
    `,
})
&#13;
&#13;
&#13;

  

我收到错误,&#34;无法读取属性&#39; list&#39;未定义的......&#34;

是否有可能在组件构造函数中使用promise?

2 个答案:

答案 0 :(得分:0)

Angular2建议在 ngOnInit 内部进行繁重的工作,而不是在构造函数内部。

ngOnInit 是一个生命周期挂钩/事件。

答案 1 :(得分:0)

您正在尝试解决有角度的生命周期。

似乎您假设您的服务是在启动过程中启动的。不是这种情况。即使您的服务是在根级别提供的,也只能及时进行初始化。您可能需要在启动逻辑期间调用一些公共init方法,以确保其初始化。