Angular での getElementById の置換
Angular の getElementById
関数の置き換えを紹介します。
また、入力からドキュメントの要素参照と値を取得するために、Angular に ElementRef
関数を導入します。
Angular での getElementById
置換
getElementById
メソッドは、指定された値を持つ ID 属性を持つ要素を返します。このメソッドは HTML DOM
で最も一般的であり、ドキュメントを操作したり、情報を取得したり、ドキュメント内の要素を取得したりするたびに使用されます。
getElementById
はバニラ Javascript
関数であり、Angular では Typescript
を使用しているため、Typescript
でのこの関数の置き換えは、このチュートリアルで紹介する ElementRef
です。
Angular の ElementRef
ElementRef
は、指定された DOM 要素をラップアラウンドして、ネイティブ要素のメソッドとプロパティを拡張できるクラスです。要素を ElementRef
として定義すると、nativeElement
オブジェクトとしてアクセスできます。
この記事は Angular 4 から Angular 12 と互換性があります。
@ViewChild
デコレータを持つクラスで ElementRef Interface
を使用して、要素参照を取得しましょう。
まず、app.component.html
テンプレートを編集して、次のコードを追加します。
# angular
<div #myNameElem></div>
<button (click)="getValue()">Get Value</button>
出力:
app.component.ts
ファイルに、以下を追加します。
#angular
import { Component, VERSION, ViewChild, ElementRef } from "@angular/core";
@Component({
selector: "my-app",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"]
})
export class AppComponent {
name = "Angular " + VERSION.major;
@ViewChild("myNameElem") myNameElem: ElementRef;
getValue() {
console.log(this.myNameElem);
this.myNameElem.nativeElement.innerHTML = "I am changed by ElementRef & ViewChild";
}
}
出力:
Angular で ElementRef
を使用して入力から値を取得する
次に、Angular で ElementRef
を使用して入力の値を取得する方法を紹介します。
まず、app.component.html
テンプレートを編集して、次のコードを追加します。
# angular
<input type="text" name="name" #myNameElem />
<button (click)="getValue()">Get Value</button>
<button (click)="resetValue()">Reset</button>
出力:
ここで、app.component.ts
ファイルに以下を追加します。
#angular
import { Component, VERSION, ViewChild, ElementRef } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
})
export class AppComponent {
name = 'Angular ' + VERSION.major;
@ViewChild('myNameElem') myNameElem: ElementRef;
getValue() {
console.log(this.myNameElem.nativeElement.value);
}
resetValue() {
this.myNameElem.nativeElement.value = '';
}
}
出力:
Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.
LinkedIn