我正在修改组件(特别是自定义呈现的下拉列表),以允许一个组件传入HTML中的变量并从下拉列表中预选择一项。
ngAfterViewInit()
似乎是抓取变量,然后根据其更新视图的正确位置。
我无法使用它。它所做的所有操作 except 实际上都会更新DOM以反映更改。
我最终决定也许应该对它进行暴力破解,而不是将变量传递给角范围内的函数,而只是抓住DOM对象并单击它:
...click()
同样,所有逻辑都会触发,但是DOM中的状态实际上不会更新以反映这一点。
我终于尝试了“在setTimeout中包装” hack:
setTimeout(function(){
...click()
},100);
还有... 有效!
为什么?
我使用了错误的钩子吗?还是误解ngAfterViewInit()
?
我注意到我可以将呼叫放在ngAfterViewChecked()
中,并且 在那里就可以正常工作了……但是问题是,钩子一直在被不断调用,所以如果将UI放置在其中,它会陷入循环。
我是否必须使用setTimeout来指示其他地方有问题? (我认为是,但是不确定什么会出问题...)