2017-06-17 60 views
1

我想我在Angular中發現了一個bug,但我不確定它,它實際上彈出了一個我還不太熟悉的區域。如果有人能證實它可能存在,那會很棒,因爲我不願意報告它。Angular APP_INITIALIZER隨機編譯器錯誤 - 有沒有其他人遇到過它?

我有一個名爲SettingsService的服務,它有一個叫loadSettings()的功能。正如名稱所示,它會加載設置。它應該在應用程序加載之前調用,這是我實現通過增加這的app.module.tsproviders部分:

providers: [SettingsService, 
       { provide: APP_INITIALIZER, 
        useFactory: (config: SettingsService) =>() => config.loadSettings(), 
        deps: [SettingsService], 
        multi: true 
       }, 

的缺陷是,它有時工作,有時沒有,甚至沒有改變任何app.module.ts或服務本身。有時我會停止NG Live開發服務器,重新啓動它,並且代碼突然不能編譯。我收到錯誤消息是:

ERROR in Error encountered resolving symbol values statically. Function calls are not supported. Consider replacing the function or lambda with a reference to an exported function (position 79:31 in the original .ts file), resolving symbol AppModule in c:/Node/boltmotor/src/app/app.module.ts 

起初,我嘗試了所有種類的修修補補,如消除lambda函數,並使用一個名爲之一,但一旦我回滾到原來的版本,它突然工作。我能夠重現它,但它只是隨機發生的。剛纔我又收到了這條錯誤消息,我簡單地通過添加空格,刪除它,保存來修復它,並且當ng-cli重新編譯應用程序時,它現在可以工作。沒有一點實際的代碼被改變了!

我想知道有沒有人對此有所瞭解。

+0

見它不應該是這樣的:useFactory:(配置:SettingsService)**'='**() => ...? – developer033

+0

也許,但它並不能解釋爲什麼有時它不編譯,有時候它不會。 –

回答

相關問題