Angular2使用类名检索所有元素

时间:2017-04-12 17:32:59

标签: angular renderer

任何人都可以帮忙找到如何找到所有' Angular 2中具有特定类名的元素?我认为这将是微不足道的,但它给了我更多准备好的问题。

<span class="classImLookingFor">foo</span>
<span class="classImLookingFor">Voo</span>
<span class="classImLookingFor">Moo</span>

我认为通过做下面的操作会返回所有带有类的元素&#34; classImLookingFor&#34;但它只返回第一个实例。

constructor(private renderer: Renderer){}
ngAfterViewInit(){
 const el = this.renderer.selectRootElement('.classImLookingFor');
 this.renderer.setElementAttribute(el, 'tabindex', 0);
}

之后,我的标记看起来像这样。

<span class="classImLookingFor" tabindex="0">foo</span>
<span class="classImLookingFor">Voo</span>
<span class="classImLookingFor">Moo</span>

似乎我应该能够创建一个Renderer数组,但这似乎也不起作用。我需要用该类名操作每个元素。在此先感谢

6 个答案:

答案 0 :(得分:17)

  

这不会返回DOM中的所有元素吗?有没有办法如何只返回Angular组件生成的元素我在“?”中?

你需要......

  1. ElementRef

    中注入constructor
    constructor(private renderer: Renderer, private elem: ElementRef){}
    
  2. 使用querySelectorAll api。

    查找您要搜索的元素
    ngAfterViewInit(){
        // you'll get your through 'elements' below code
        let elements = this.elem.nativeElement.querySelectorAll('.classImLookingFor');
    }
    
  3. The answer @Aravind提供的效果不是最好的,因为它会搜索整个DOM。

    此解决方案将只搜索当前组件中的DOM。

答案 1 :(得分:4)

回答该评论适用于OP。

您应该使用

document.querySelectorAll('.classImLookingFor')

答案 2 :(得分:4)

Angular 10+文档与SSR兼容,导入:

import { DOCUMENT } from '@angular/common'

然后注入:

constructor(@Inject(DOCUMENT) private _document: HTMLDocument) {
    }

并在您的component /指令中像这样使用:

doSomething(): void {
 this._document.querySelectorAll('.classImLookingFor')
}

答案 3 :(得分:3)

对于您的用例,这可能有点过于简单,但有没有理由不能使用本机DOM函数,如此?

var domRepresentation = document.getElementsByClassName('classImLookingFor');
var angularElement = angular.element(domRepresentation);

答案 4 :(得分:1)

有多种方法可以做,但 Angular 9+ 版本提供的最新版本是:

1.import Inject 和 DOCUMENT in angular。

import {Inject } from '@angular/core';
import { DOCUMENT } from '@angular/common';

2.然后在所需类的构造函数中创建一个引用。

constructor(@Inject(DOCUMENT) private _document: HTMLDocument) {}

3.用作所有可用 javascript 方法的变量。

selectElement(): void {
 this._document.querySelector('#mySelectedId');
}

答案 5 :(得分:0)

您需要在Angular中使用DOM

var element=document.getElementsByClassName("X").item(0);

对我有用!