2
在我的Angular應用程序中,我使用共享服務,因爲數據不斷更新,所以我不需要成爲單例服務。Angular 4.1.3使用AOT時,Service Factory返回undefined
服務工廠:
import {DataService} from '../../../../shared/services/data.service';
import {Http} from '@angular/http';
export const DataServiceProvider = {
provide: DataService,
useFactory(http: Http) {
return new DataService(http);
},
deps: [Http]
};
當我運行在JIT模式的應用程序,該工廠工作正常,但是當我建立一個與--aot標誌,我收到以下錯誤。
ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'get' of undefined
TypeError: Cannot read property 'get' of undefined
返回的服務有一個調用服務器的get()方法。我不知道AOT打破了這個看似簡單的功能。
有關更多的參考,我注入的服務構造:
construct(
dataService: DataService
) {
super();
}
,並呼籲它在ngOnInit():
ngOnOnit() {
this.subscribe(this.dataService.get(), (res) => { this.data = res });
}
我有些訂閱功能抽象從我的組件,它處理掉取消訂閱以防止內存泄漏,這就是爲什麼代碼看起來很奇怪。
我認爲與AOT應該在編譯失敗,如果它不能被分析。我已經改變了const factoryFunction =(http:Http)=>返回新的DataService;由於編譯失敗,但我從來沒有想過導出函數!萬分感謝。 – user1119648