ngAfterViewInit()尚不如我所需要的那样来更新组件的状态

时间:2018-07-26 16:07:38

标签: javascript angular

我正在修改组件(特别是自定义呈现的下拉列表),以允许一个组件传入HTML中的变量并从下拉列表中预选择一项。

ngAfterViewInit()似乎是抓取变量,然后根据其更新视图的正确位置。

我无法使用它。它所做的所有操作 except 实际上都会更新DOM以反映更改。

我最终决定也许应该对它进行暴力破解,而不是将变量传递给角范围内的函数,而只是抓住DOM对象并单击它:

...click()

同样,所有逻辑都会触发,但是DOM中的状态实际上不会更新以反映这一点。

我终于尝试了“在setTimeout中包装” hack:

setTimeout(function(){
    ...click()
},100);

还有... 有效!

为什么?

我使用了错误的钩子吗?还是误解ngAfterViewInit()

我注意到我可以将呼叫放在ngAfterViewChecked()中,并且 在那里就可以正常工作了……但是问题是,钩子一直在被不断调用,所以如果将UI放置在其中,它会陷入循环。

我是否必须使用setTimeout来指示其他地方有问题? (我认为是,但是不确定什么会出问题...)

0 个答案:

没有答案