Как получить элемент dom, используя атрибут name в angular 2, 4 или 5

У меня есть шаблон, в котором есть несколько тегов изображений (img), все они повторяются в цикле foreach и изменяют этот атрибут / свойства img src в файле машинописного текста.

HTML код:

<div *ngFor = "let lt of list">
<div>
    <a href = "{{lt.url}}" target = "_self">
      <img mat-card-image name = "{{lt.name}}" class = "image" src = "" placement = "top" container = "body">
    </a>
</div>
<div>
    <a href = "{{lt.url}}" target = "_self">
      <img mat-card-image name = "{{lt.name}}" class = "image" src = "" placement = "top" container = "body">
    </a>
</div>
<div>
    <a href = "{{lt.url}}" target = "_self">
      <img mat-card-image name = "{{lt.name}}" class = "image" src = "" placement = "top" container = "body">
    </a>
</div>
</div>

код в машинописном файле,

ngOnInit() {
    for (const lt of list) {
        if (lt.title === 'xyz') {
          lt.title = 'XYZ';
        }
        if (lt.appFlag) {
          this.getIcon(lt.name);
        }
    }
}


  private getIcon(name: string): void {
  const imageUrl = this.service.createURL('abc');

  // how to get img tag using property/attribute name(name here is unique item name) from HTML without using document.querySelector etc.
  ....
  ....
  //const img = this.name.nativeElement.name;

  //console.info('inside getIcon:img', img);


  if (img) {
    img['src'] = imageUrl;
  }
});
}

Без использования document.querySelector или document.getElementByName и т. д. Возможно ли это с любой функцией Angular, такой как ElementREf и т. д.

Vinod 02.05.2018 08:29

это сработало для вас ???

Pranay Rana 02.05.2018 15:41
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
2
1 693
1

Ответы 1

вы можете получить доступ, создав directive и прикрепив свой элемент, ниже приведен код для этого. В приведенной ниже директиве используется ElementRef, который, в свою очередь, позволяет вам взаимодействовать с элементом nativeHtml.


ImageElementDirective

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

@Directive({
  selector:"[imageElement]"
})
class ImageElement {
  constructor(private el: ElementRef) {
  }

  getImage() : any {
    return el.nativeElement;
  }
}

Component.ts

//this will give you all image element , 
//you should use for loop or foreach to perform operation 
//you want
@ViewChildren(ImageElement) allImageElement; 

Component.html

<img imageElement ..rest>
<img imageElement ..rest>

Другие вопросы по теме