Angular 2在应用启动时调用服务

时间:2017-03-06 08:27:17

标签: angular ionic-framework ionic2

我有一个提供程序,我想使用APP_INITIALIZER在应用程序初始化时运行它,但不知何故我一直收到错误

未处理的Promise拒绝:appInits [i]不是函数;区域:;任务:Promise.then;值:TypeError:appInits [i]不是函数

这是我的提供者:

@Injectable()
export class SendNotification {
  constructor(public http: Http) {
  Observable.interval(30 * 60 * 1000)
            .switchMap(res =>this.http.get(`http://localhost:8100/api/balance.pl?meternumber=0003080123&api=json`))
            .map(res => res.json())
            .subscribe(res => this.check(res))
}

private check(res) {
  console.log("Check wether to notify a user")
}

在我的app.module.ts上,我打电话给提供者如下:

providers: [{provide: APP_INITIALIZER,useClass: SendNotification,deps:[Http],multi: true}]
})

任何帮助将不胜感激?

1 个答案:

答案 0 :(得分:0)

我认为您需要使用useFactory并调用返回PromiseObservable

的方法
function notificationInitializer() : () => Promise<any> {
  return () => Promise.resolve(null);
}

providers: [
  SendNotification,
  { provide: APP_INITIALIZER, useFactory: notificationInitializer, 
        deps:[Http, SendNotification],
        multi: true}]
})