2017-01-19 52 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

相关问题