私はこの入力を動的に生成しています:
<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}}
この動的IDに基づいてDOM要素への参照を取得したいことに注意してください。この入力は3、6、またはそれ以上の入力になる可能性があるため、IDに動的にアクセスし、IDを保持する必要があります。
唯一の応答は
let elem:Element = document.getElementById("myProgrammaticallyChosenIndex")
他のangular奇妙なセレモニーは必要ありません
angular 4+でテスト済み
@angular/core
のElementRef
クラスを使用して親要素を取得し、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
からelementRef
にアクセスできます。
コンストラクタを介して注入する
constructor(myElement: ElementRef) { ... }
DOM
プロパティでnativeElement
要素にアクセスします
myElement.nativeElement.select("#blabla")