【问题标题】:scrollIntoView() doesn't work with application selectorscrollIntoView() 不适用于应用程序选择器
【发布时间】:2018-04-26 02:03:09
【问题描述】:

有人知道滚动到锚点的正确实现吗?这种方法不起作用: Angular2 scroll to element that has *ngIf

这是引用其他组件的模板:

<app-app1 id="id1"></app-app1>
<app-app2 id="id2"></app-app2>
<app-app3 id="id3" *ngIf="test"></app-app3>

通过单击一个按钮,我想滚动到相应的部分:

let elm = document.querySelector("#id1");
if (elm)
  elm.scrollIntoView();

scrollIntoView() 已执行,但它滚动到错误的位置(例如到该部分的中间)并且根本不适用于 app-app3。

【问题讨论】:

  • 点击按钮前后test是否为真?
  • 在我的情况下,页面加载时确实如此......然后没有改变...... *ng如果不是很大的问题......首先我希望它滚动到应用选择器中的正确位置
  • @JohnGlabb 你有多个元素与idid1 ..
  • no.. 它是独一无二的.. 考虑到每个组件的内容真的很大。我什至试图将它包装到父

标签: javascript angular typescript


【解决方案1】:

我是这样解决的: 1.从应用选择器组件中删除“id3”:

   change: <app-app3 id="id3" *ngIf="test"></app-app3>
   to:     <app-app3 *ngIf="test"></app-app3>
  1. 将新的 div 放在组件的最顶部:

  1. 更改:
let elm = document.querySelector("#id3");
if (elm)
  elm.scrollIntoView();

到:

let elm = document.getElementById("id3");
elm.scrollIntoView({behavior: "instant", block: "center", inline: "center"});

【讨论】:

    猜你喜欢
    • 2016-12-07
    • 1970-01-01
    • 1970-01-01
    • 2014-07-05
    • 2017-10-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2021-11-03
    相关资源
    最近更新 更多