angular - Angular(TypeScript):如何按类滚动到选定的元素
问题描述
请不要将此标记为重复,我搜索并搜索并找不到解决方案
所以假设我有一个名为“订单”的订单列表
在我看来,我在具有垂直滚动集的侧边栏中展示了这些订单及其详细信息:
<div>
<div id="main-content">
Main Content
</div>
<div id="sidebar">
<div *ngFor="let order of orders" [ngClass]="{'selected-order': selectedOrder == order}>
<div>order.orderNumber</div>
<div>order.orderDetails</div>
</div>
</div>
</div>
在我的主要内容中,当我单击标记时,我的地图具有标记我希望选择正确的顺序,并且我希望侧边栏滚动并专注于正确的顺序。
这是我尝试过的:
function selectMarker() {
//...omitted code
// scroll to correct marker in sidebar
var offset = $(".selected-order").offset();
$('#sidebar').animate({
scrollTop: offset.top,
scrollLeft: offset.left
}, 1000);
}
这不起作用,它没有选择正确的元素。
有纯 Typescript/Angular 解决方案吗?
解决方案
您可以使用ElementRef
和来做到这一点scrollIntoView
。
import { ElementRef } from '@angular/core';
...
contructor(private el: ElementRef) { }
function selectMarker() {
this.el.nativeElement.querySelector('.selected-order').scrollIntoView();
}
推荐阅读
- fluentd - FluentD 将日志从 kafka 转发到另一个 fluentD
- r - 替换R中2个数据帧之间的行
- javascript - Croppic,将图像大小调整到容器大小以下
- javascript - 根据函数结果禁用按钮
- google-cloud-platform - Why GCP loadbalancer frontend has only two ports enabled?
- c# - 如何从类中访问 GET 方法的结果?
- parsing - 为什么 C++ strtod 将“708530856168225829.3221614e9”解析为 7.08530856168225898e+26 而不是 7.08530856168225761e+26?
- visual-studio-code - Visual Studio Code Insiders mac os 不起作用
- hadoop - 将 Serde jar 添加到 hive/lib
- sql - OUT 和 OUTPUT 的区别