我遵循了角度2教程:路由和导航 - 查询参数https://angular.io/docs/ts/latest/guide/router.html#!#query-parameters
我们的想法是从列表向下钻取到新路线,然后返回到列表中的相同项目。
它适用于他们,因为列表很短而没有滚动。
我有相同的情况,但列表很长。 回到列表屏幕后,我加载并绑定列表,我需要将滚动设置为当前项目(并不总是可见)。 我试过了:
ngAfterViewChecked() {
if(this.selectedId)
this.el.nativeElement.querySelector("[id='7']").scrollIntoView();
}
(为简单起见,7为硬编码)
实际上,每次在每个钩子上尝试它,并且每次查询选择器返回null。
(在页面加载后,在浏览器控制台上,此行正常工作:...querySelector("[id='7']").scrollIntoView();)
我没有想法,你能想到在绑定列表后完成滚动的其他事情吗?
这里是棱角分明的活动:http://plnkr.co/edit/?p=preview 如果你缩小窗口(获得滚动条)并点击最后一个英雄(rubberMan),你会明白我的意思。 感谢
答案 0 :(得分:2)
我找到了一个解决方案/解决方法:
ngAfterViewChecked() {
let timer = Observable.timer(0);
timer.subscribe(t => {
if (this.selectedId)
this.el.nativeElement.querySelector("[id='" + this.selectedId + "']").scrollIntoView();
});
它接触到零延迟的计时器解决问题