Idで要素div <div id ="myId">
を取得するAngular 2コンポーネントがあります。コンポーネント(TypeScript)でdocument.getElementById("myId")
を実行しようとしましたが、「名前ドキュメントが見つかりません」というエラーが表示されます。他の投稿で@ViewChildを使用して同様のことができることがわかりますが、divでこれをどのように使用できるかわかりません。
TemplateRef を追加することで、divで@ViewChildを使用できます。
テンプレート
<div id ="myId" #myId>
コンポーネント
import { Component, ViewChild, ElementRef, AfterViewInit } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements AfterViewInit {
@ViewChild('myId') myId: ElementRef;
constructor() {
}
ngAfterViewInit() {
console.log(this.myId.nativeElement);
}
}
このブログ投稿 Kara Ericksonによる、このようなことを行うためのAngularアプローチに精通するための非常に良い読み物です。
アクセスする必要がある要素にテンプレート参照変数を追加します。
<div #myDiv></div>
そしてコンポーネントで:
class MyComponent implements AfterViewInit {
@ViewChild('myDiv') myDiv: ElementRef;
constructor() {}
ngAfterViewInit() {
console.log(this.myDiv);
}
}