Angular DOM操作
今回はDOM操作をしてみます。Angular CLIの続きからやるので、環境がない場合、そちらを参考に環境構築してください。
サンプルソース
DOM操作を行うには、Renderer2 を使用します。コンストラクタで取得し、その後のDOM操作で使用します。画面の情報を取得するにはいくつか方法がありますが、今回はテンプレート参照変数とViewChildを使って連携します。
app.component.ts
import { Component, ViewChild, ElementRef, Renderer2 } from '@angular/core';
@Component({
selector: 'app-root',
template:
`
<button (click)="onClickMe()">Click me!</button>
<div #test></div>
`
})
export class AppComponent {
@ViewChild('test')
private test2: ElementRef;
constructor(private renderer: Renderer2) {
}
onClickMe() {
let btn = this.renderer.createElement('button');
let text = this.renderer.createText('ボタン作成');
this.renderer.setAttribute(btn, 'name', 'btnName');
this.renderer.addClass(btn, 'className');
this.renderer.setStyle(btn, 'width', '150px');
this.renderer.appendChild(btn, text);
this.renderer.appendChild(this.test2.nativeElement, btn);
this.renderer.listen(btn, 'click', (event) => {
this.renderer.removeChild(this.test2.nativeElement, btn);
});
}
}
実行イメージ
「Click me!」ボタンを押すと「ボタン作成」ボタンが表示され、「ボタン作成」ボタンを押すと消えます。
主なDOM操作処理メソッド
メソッド | 説明 |
---|---|
createElement('要素名') | 要素を新規作成 |
createText('テキスト') | 要素のテキストの追加 |
appendChild(親要素, 追加する要素) | 親要素に要素を追加 |
insertBefore(親要素, 挿入する要素, 位置指定要素) | 親要素の指定位置に要素を挿入 |
removeChild(親要素, 削除する要素) | 親要素から要素を削除 |
parentNode(指定要素) | 親要素を取得 |
nextSibling(指定要素) | 兄弟要素を取得(指定要素の下の要素) |
setAttribute(指定要素, '属性名', '属性値') | 要素に属性の追加 |
removeAttribute(指定要素, '属性名') | 要素から属性の削除 |
addClass(指定要素, '追加クラス名') | 要素にクラスの追加 |
removeClass(指定要素, '追加クラス名') | 要素からクラスの削除 |
listen(指定要素, 'イベント', 実行するメソッド) | 要素のイベントハンドラの追加 |
ページのトップへ戻る