【问题标题】:Better way to access DOM class or id using typescript使用 typescript 访问 DOM 类或 id 的更好方法
【发布时间】:2023-03-15 22:58:02
【问题描述】:

我正在尝试清理我的应用程序中所有与 jQuery 相关的东西。当我这样做时,我在 javascript 方法和 Angular 本机方法之间使用时感到困惑。因此,我需要对以下代码进行一些说明。

用jQuery动态添加和删除类:

$('.my-class').removeClass('list-hide').addClass('list-show');

在 Javascript 中:

 var element = document.getElementByClassName('.my-class');
 element.classList.remove('list-hide');
 element.classList.add('list-show');

使用 TypeScript:

  const element = this.elemRef.nativeElement.querySelector('.my-class');
  element.classList.remove('list-hide');
  element.classList.add('list-show');

问题是我有很多上面的场景可以通过 DOM Id 和类名访问。如果我使用 ElementRef,我可能会多次写 this.elementRef.nativeElement。 另外在官方文档中说 - '如果不支持直接访问本机元素,请使用 Render2' 并注意。

请帮助我更好地访问 DOM 元素,而无需从我的 Angular 应用程序中进行更多重复和 jQuery。

【问题讨论】:

  • 您可以在您的 Angular 项目中使用 Jquery。参考这个 [stackoverflow.com/questions/30623825/…
  • 我想从我的项目中完全删除 JQuery
  • @Mukesh 问题是关于摆脱 jQuery,而不是添加它
  • @Onera 你知道你仍然可以在打字稿中简单地使用document.getElementByClassName,对吧?
  • 你想达到什么目的?您可以在组件中使用带有标志的[ngClass] 属性(类似isOpen 的布尔属性),或者您可以为元素创建自定义组件。但这真的取决于你需要什么。所以很难说什么最适合你的情况。

标签: javascript jquery angular typescript


【解决方案1】:

据我所知,使用 ngClass 会更容易动态添加和删除类。 如果您针对特定类并希望动态执行添加或删除类,您可以执行以下操作:

在ts中:

filterBy:string = '';

selectedItemCode(field){
  this.filterBy = field;
}

在html中:

 <div (click)="selectedItemCode('random1')">Example-One</div>
 <div (click)="selectedItemCode('random2')">Example-two</div>

 <section class="my-class" [ngClass]="filterBy === 'random1'? 'list-show' : 'list-hide'">
 </section>

并回答与 elemRef.nativeElement.querySelector('my-class') 重复相关的问题:

使用 ngAfterViewInit 生命周期钩子,如下所示:

export class SomeComponent {
  public element;

  constructor(private elemRef: ElementRef){}

  ngAfterViewInit(){
    this.element = this.elemRef.nativeElement;
  }

}

之后你可以直接使用 this.element.querySelector 来访问 DOM 元素

【讨论】:

  • 感谢您的回复。好主意。我刚刚落后于添加方法和动态访问类。谢谢大佬:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-17
  • 2011-07-18
  • 1970-01-01
  • 2013-09-04
  • 2020-02-07
  • 1970-01-01
  • 2021-02-26
相关资源
最近更新 更多