Angular6:点击功能仅在某些时候有效

Posted

技术标签:

【中文标题】Angular6:点击功能仅在某些时候有效【英文标题】:Angular6: click function only works some of the time 【发布时间】:2018-12-11 00:45:28 【问题描述】:

我在我的 Angular 应用程序中使用 element.scrollIntoView()。

当我的点击功能起作用时,我会看到想要的元素。

我的 TS 文件:

elem1;
  elem2;

  ngOnInit() 
    this.elem1 = document.getElementById('elem1');
    this.elem2 = document.getElementById('elem2')
  

handleElemScroll(elem) 

    // elem.scrollTop = 1000;
    elem.scrollIntoView(behavior: 'smooth', block: 'end');

  

在我的模板中,我使用 mat-nav-list,单击时传递元素的 id 并使用 elem1.scrollIntoView() 或 elem2.scrollIntoView() 将所需的元素显示在视图中(现在将其纳入视野,但理想情况下该元素应位于顶部)。

<div class="new-side-nav">
  <mat-nav-list>
    <a mat-list-item>
    <span (click)="handleElemScroll(elem1)">Go to elem1</span>
    </a>
    <a mat-list-item>
    <span (click)="handleElemScroll(elem2)">Go to elem2</span>
    </a>
  </mat-nav-list>
</div>

当点击功能起作用时,我可以看到两个元素都在点击时出现(scrollIntoView 起作用)。但是点击行为是不可预测的。有时点击有效并且 handleElemScroll() 函数运行,有时它什么也不做。

关于为什么会发生这种情况的任何线索?

【问题讨论】:

我不确定我是否完全理解问题,而是像 handleElemScroll($event) 一样放入 handleElemScroll(CLICK EVENT)。然后从事件中获取一个目标并滚动到它。 每次点击都不会触发 on click,当点击发生时滚动事件可以正常工作。 【参考方案1】:

好的,正如我之前告诉你的那样,看看这段代码(在我的例子中是 Angular 6,但它必须从 2 开始工作):

import  Component, OnInit  from '@angular/core';

 @Component(
 selector: 'eas-requests',
 templateUrl: './requests.component.html',
 styleUrls: ['./requests.component.css']
 )
 export class RequestsComponent implements OnInit 

 // No need to declare
 el1:HTMLElement;
 el2:HTMLElement;
 constructor()  

 ngOnInit() 
   //No need to declare
   this.el1 = document.getElementById('el1');
   this.el2 = document.getElementById('el2');
 

 // Just declare this method and receive html element.
 clickEvent(e:HTMLElement)
    e.scrollIntoView(behavior: 'smooth', block: 'end');
 

还有html:

<div id="el1" (click)="clickEvent($event.target)">Element 1</div>
<div id="el2" (click)="clickEvent($event.target)">Element 2</div>

在此操作中,您传递点击事件。因此,在功能中,您会收到您点击的 HTMLElement。在我的情况下,在我使用点击事件的任何元素上都可以正常工作。

【讨论】:

以上是关于Angular6:点击功能仅在某些时候有效的主要内容,如果未能解决你的问题,请参考以下文章

双跳的 SpriteKit 问题仅在某些时候有效

Instagram 公共 API (/?__a=1) 有效,但仅在某些时候有效

带有选项卡的 Angular 6 RouterLink

为啥 glreadpixels 仅在某些情况下有效?

Javascript仅在点击时填充画布的某些部分

次要 Angular6 路由在点击时不执行任何操作。没有错误