Angular2错误:无法将undefined或null转换为object

时间:2017-01-19 19:12:10

标签: angular

我在版本2.2.3中使用了角度,并且总是很好用。 当我升级到版本2.4.4时,出现了一个错误(下图中的错误)。

在数小时内搜索发生了什么后,我发现问题是因为在路由器的属性loadChildren中使用函数() => ExampleModule更不可能。

要使用此功能,我需要将loadchildren: () => ExampleModule更改为loadchildren: 'path/example.module#ExampleModule',并且角度按预期工作。

  

现在我想知道函数类型()=>不再支持   使用或发生这种情况是因为我创建了一个错误?

enter image description here

1 个答案:

答案 0 :(得分:2)

卡林霍斯,

今天看来是这样的:

更新日志: router:使用aot

中的函数启用loadChildren

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

看起来这与延迟加载和急切加载有关,以修复AOT编译,因为编译器在合适的时间无法解决路径问题。

我认为这个问题可能与功能的回归有关,而不是功能本身 - 它现在期待工厂退货,所以它可能该功能不再有效。

所以,功能仍然允许,但我认为他们必须返回工厂。它看起来总是允许字符串,并且它们可以工作,因为它们不使用提供的工厂:

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

我认为如果你没有使用AOT / lazy vs eager loading,你可能不会关心这个并且可以使用该字符串。