Angular ( typescript ): How to scroll to selected element by class

标签 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>

在我的主要内容中,我的 map 上有标记,当我单击标记时,我希望选择正确的顺序,并且希望侧边栏滚动并聚焦于正确的顺序。

这是我尝试过的:

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 解决方案?

最佳答案

您可以使用 ElementRefscrollIntoView 来完成此操作。

import { ElementRef } from '@angular/core';

...

contructor(private el: ElementRef) { }

function selectMarker() {
    this.el.nativeElement.querySelector('.selected-order').scrollIntoView();
}

关于 Angular ( typescript ): How to scroll to selected element by class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57679078/

相关文章:

angular - Angular 2 中的语法高亮显示

javascript - Angular2 RC-4 迁移因反射元数据而失败

javascript - 获取基本 href Angular 4

javascript - 如何在 bitcoinjs-lib 中创建新的 PSBT 交易?

javascript - 从结构指令向父组件发射事件不起作用

angular - ngrx 在组件(与路由关联)init 上调度操作

angular - 如何在 Angular 2的不同路线之间应用不同的动画

Typescript 和 Array.filter() 协同工作

java - ElasticSearch 解析异常

typescript - 如何从属于另一个控制组的控制组获取控制权