【发布时间】:2019-12-17 22:22:15
【问题描述】:
我的 ngAfterViewInit 函数没有按预期工作。我觉得我在这里遗漏了一些东西。
ngOnInit() {
this.dataService.getUsers().subscribe((users) => {this.users = users) ;
}
ngAfterViewInit() {
if (document.getElementById('target')) {
document.getElementById('target').scrollIntoView({
behavior: 'auto',
block: 'center',
inline: 'center',
});
}
所以基本上,在视图完成加载后,我使用ngAfterViewInint() 函数滚动到当前项目。在ngOnInit() 内部,如果我不调用subscribe() 并在其中放置一个变量。它工作得很好。但事实并非如此。
我可以在ngAfterViewInit() 中使用setTimeOut()。但我不喜欢它。我不喜欢它依赖超时的事实。而且我认为会有更好的解决方案。
有什么理想吗?谢谢大家。
【问题讨论】:
-
您的
target元素是否依赖于从您的请求返回的数据? -
您不能在 Angular 2+ 中引用这样的元素 调用子原生元素时请参阅此内容 stackoverflow.com/questions/48226868/…
-
@Pyth 是的。是的。
-
@Rager 谢谢。让我试试。
-
????我认为
@ViewChildren是她的完美方式,我已经包含了我的答案希望它有帮助????
标签: javascript angular typescript