2017-03-06 70 views
0

我有一個供應商,我想使用APP_INITIALIZER上的應用程序初始化運行它,但不知何故,我不斷收到一個錯誤角2調用應用程序啓動時服務

Unhandled Promise rejection: appInits[i] is not a function ; Zone: ; Task: Promise.then ; Value: TypeError: appInits[i] is not a function

這裏是我的供應商:

@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}] 
}) 

任何幫助將不勝感激?

+0

的方法'appInits'從你的代碼名? –

+0

不,我沒有在我的代碼... – bobin56

回答

0

我認爲你需要使用useFactory和調用返回一個PromiseObservable

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

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

感謝您的幫助,一個快速的問題,notificationInitializer函數應該去哪裏? – bobin56

+0

並不重要。無論是在同一文件中還是在導入到當前文件的文件中,以便引用它的提供程序都是有效的TS。 –

+0

仍然收到相同的錯誤 – bobin56

相關問題