Ответ 1
Единственный ответ
let elem:Element = document.getElementById("myProgrammaticallyChosenIndex")
Никакой другой угловой странной церемонии не требовалось
Протестировано на угловом 4+
У меня эти входы генерируются динамически:
<div *ngFor="let cell of column; let i = index;">
<!-- Material design input-->
<md-input id="my-input-{{i}}">
</md-input>
</div>
Обратите внимание: id=my-input-{{i}}
Я бы хотел получить ссылку на элемент DOM на основе этого динамического идентификатора. Этот вход может быть 3, 6 или более входов, поэтому мне нужно получить доступ к идентификатору динамически и получить удержание.
Единственный ответ
let elem:Element = document.getElementById("myProgrammaticallyChosenIndex")
Никакой другой угловой странной церемонии не требовалось
Протестировано на угловом 4+
Используйте класс ElementRef
из @angular/core
чтобы получить родительский элемент, а затем создайте HTMLElement
чтобы получить его динамические элементы по имени класса.
Компонент:
declare var $: any; //intentional use of jQuery-not recommended though
@Component({
selector: 'my-app',
template: '
<input type='button' (click)='addDiv()' value='Add New Div' />
<input type='button' (click)='selectDiv()' value='Select' />
'
})
export class App {
constructor(private elRef: ElementRef) {
}
addDiv() {
/*intentional use of jQuery for appending new div
give a class to your dynamic elements*/
$('my-app').append("<div class='foo'>Hello I'm Dynamic!</div>");
}
selectDiv() {
//create a new HTMLElement from nativeElement
var hElement: HTMLElement = this.elRef.nativeElement;
//now you can simply get your elements with their class name
var allDivs = hElement.getElementsByClassName('foo');
//do something with selected elements
console.log(allDivs);
}
}
Изменить: я использовал jQuery
только для быстрой демонстрационной цели. В противном случае вы не должны использовать jQuery
с Angular
.
Вы можете получить доступ к DOM элементом element.
Внесите его, чтобы ваш конструктор
constructor(myElement: ElementRef) { ... }
И доступ к элементу DOM с помощью свойства nativeElement
elementRef.nativeElement.select("#blabla")
Существует класс класса ElementRef
Это дает вашему разрешению прямой доступ к текущему компоненту или директивному размещению DOM.
Вы можете использовать ElementRef.nativeElement
для получения элемента HTML, затем вы можете получить доступ к свойствам элемента html, чтобы внести изменения, используя класс jQuery
или Renderer
предоставленный Angular 2.
Пример с ElementRef
и Renderer
:
import { Directive, ElementRef, Input, Renderer } from '@angular/core';
@Directive({ selector: '[myHighlight]' })
export class HighlightDirective {
constructor(el: ElementRef, renderer: Renderer) {
renderer.setElementStyle(el.nativeElement, 'backgroundColor', 'yellow');
}
}