关于angular2的ngOnInit和constructor

我知道ngOnInitconstructor都能在页面初始化的时候执行,constructorngOnInit快,并且看到官网说尽量将复杂的内容放在ngOnInit里,我也一直是这么做的。

然而最近遇到了一个问题,跳路由之后,页面只执行constructor没有执行ngOnInit,当我再次点击路由或者输入页面中的Input框时,才执行ngOnInit。这导致了一个问题,跳路由时,我的页面加载不完全。

然后又滚去看官网,有这样一句话:Remember also that a directive's data-bound input properties are not set until after construction. That's a problem if we need to initialize the directive based on those properties. They'll have been set when our ngOninit runs.
中文翻译:另外还要记住,在指令的 构造函数完成之前 ,那些被绑定的输入属性还都没有值。 如果我们需要基于这些属性的值来初始化这个指令,这种情况就会出问题。 而当 ngOnInit 执行的时候,这些属性都已经被正确的赋值过了。

我表示没有看懂,另外看到说ngOnInit会在第一次执行ngOnChanges之后执行,那么我遇到的这个问题是因为我没有触发ngOnChanges吗?

求大神解答。

以下是我的代码:

https://img3.mukewang.com/5bae0adb0001e41404780730.jpg

html

https://img2.mukewang.com/5bae0aee0001981006390563.jpg

湖上湖
浏览 860回答 1
1回答

largeQ

我遇到的情况和你的一样,最后发现是没有引入一个模块导致的import 'core-js/es6';楼主可以试一下,我的已经解决用的是"core-js": "^2.4.1"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript