Angular 如何滚动到角度中的元素?

Angular 如何滚动到角度中的元素?,angular,Angular,我使用Angular>=9,我有一个HostListener来监听arrowdown和arrowup事件。请参见下面的简化代码: @HostListener('window:keydown.arrowup', ['$event']) onArrowDown($event: KeyboardEvent) { this.selected--; } @HostListener('window:keydown.arrowdown', ['$event']) onArrowDown($event

我使用Angular>=9,我有一个HostListener来监听
arrowdown
arrowup
事件。请参见下面的简化代码:

@HostListener('window:keydown.arrowup', ['$event'])
onArrowDown($event: KeyboardEvent) {
    this.selected--;
}

@HostListener('window:keydown.arrowdown', ['$event'])
onArrowDown($event: KeyboardEvent) {
    this.selected++;
}
在HTML模板中,我有一个列表,并检查
selected==I
,以指示这是我刚刚选择的元素。但是,如果列表太长,
箭头向下
当然不会滚动到该元素


IsSelected:{{selected==i}

由于
selected++
selected--
会在之后触发UI更新,因此我不能立即使用
scrollTo
功能。这个问题的正确解决方案是什么?

我认为您的问题是UI更新导致
ngFor
重新创建DOM。如果使用
trackBy
功能,如:


IsSelected:{{selected==i}
函数trackByFunction(对象:?){
return object.id;//或唯一标识对象的内容。
}

那么您应该能够在更改所选
的值后立即滚动

为什么不能在更改所选
的值后立即滚动?所有元素都在DOM中,不是吗?