2
ViewChild
を使用してコンポーネントのDOMにアクセスしたいとします。しかし、nativeElement
プロパティにアクセスしようとすると、undefined
になります。角度:ViewChildでnativeElementが未定義
以下はスニペットです。
import { Component, ViewChild, AfterViewInit } from '@angular/core';
import { AlertComponent } from './alert.component';
@Component({
selector: 'app-root',
template: `
<app-alert #alert>My alert</app-alert>
<button (click)="showAlert()">Show Alert</button>`
})
export class AppComponent implements AfterViewInit {
@ViewChild('alert') alert;
showAlert() {
console.log('alert (showalert)', this.alert.nativeElement);
this.alert.show();
}
ngAfterViewInit() {
console.log('alert (afterviewinit)', this.alert.nativeElement);
}
}
plunkをご覧ください。
ありがとうございます!デフォルトではコンポーネントインスタンスを返します。コンポーネントインスタンスを返すために 'read'プロパティを明示的に指定するにはどうしたらいいですか?また、あなたが私が別の目的のために設定できる他の値が何であるかを知ることができれば幸いです。 – karthikaruna
これはプレーンなHTML要素の場合、デフォルトは 'ElementRef'です。コンポーネントまたはディレクティブをホストする場合、デフォルトでコンポーネントインスタンスが取得されます。 '@ViewChild( 'alert'、{read:AlertComponent})のような特定のコンポーネントを要求するために、コンポーネントまたはディレクティブの型名を使うことができます。alert:AlertComponent;' –