2017-01-19 79 views
0

我在版本2.2.3中使用了角度並始終保持良好。 當我升級到版本2.4.4時出現了一個錯誤(下圖中的錯誤)。Angular2錯誤:無法將undefined或null轉換爲對象

下班後搜索發生了什麼我發現這個問題是因爲沒有更多的可能使用功能() => ExampleModule屬性loadChildren的路由器。

爲了使用這個我需要更改loadchildren:() => ExampleModuleloadchildren: 'path/example.module#ExampleModule',並且角度按預期工作。

Now i want know if the function type() => is not more supported to use or this happened because i created a error ?

enter image description here

回答

2

卡林霍斯,

看起來是這樣被介紹的今天:

更新日誌: 路由器:實現與功能loadChildren在AOT

https://github.com/angular/angular/blob/master/CHANGELOG.md#244-2017-01-19

看起來這與延遲加載vs預先加載來修復AOT編譯有關,因爲編譯器在適當的時間不可用來解決路由問題。

我在想這個問題可能與函數的返回有關,而不是函數本身 - 它期望現在返回一個工廠,所以函數可能不再有效。

所以,功能仍然是允許的,但我認爲他們必須返回一個工廠。它看起來像串總是允許的,而且他們的工作,因爲他們不利用提供的工廠:

https://github.com/DzmitryShylovich/angular/blob/47b1031ba4552fd840817da9b7aa7da5780854a8/modules/%40angular/router/src/config.ts#L321

我認爲,如果你不使用AOT /懶人VS預先加載,你可能不會在意關於這個,可以使用字符串。

+0

謝謝你的幫助。我知道字符串模式和函數已經在很久以前使用過了,但是我提出了這個問題,因爲在angular site中沒有關於函數模式的更多解釋,只有字符串模式。 現在即時通訊不使用AOT,但一切按預期工作,我會繼續用字符串模式寫。 https://angular.io/docs/ts/latest/guide/router.html#!#asynchronous-routing – Carlinhos

相關問題