フロントエンドの Angular アプリがあり、特定のテキストエリアにフォーカスを設定し、カーソルを点滅させて、ロード時にユーザーがテキストエリアに入力できるようにしたいと考えています。
グーグルで調べてみたところ、@ViewChild が正しい選択かもしれないと思いました。しかし、これまでのところ、私はそれを機能させることができました。
これは私のスタンドアロン ts ファイル全体です:
最初に、正しいオプションを @ViewChild に渡すことです:
@ViewChild
そうしないと、dom ノードの代わりにコンポーネント インスタンスが取得されます。
*ngIf/*ngFor のような構造ディレクティブがない場合は、 {static: true, read: ElementRef} を渡すこともできます。これにより、elementRef が ngOnInit で使用可能になります 、それ以外の場合は AfterViewInit
{static: true, read: ElementRef}
ngOnInit で使用可能になります
AfterViewInit
nativeElement がまだ DOM にないため、コードは機能しないと思います。 以下は動作します (コンソール (test1) では、ngAfterViewInit の先頭でnativeElementがnullであることがわかります)。おそらく 1000 ミリ秒を追加する必要があります:
}
ここでは、NativeElement が DOM に表示されるのを待機するより決定的な方法 (setTimeout よりも) を説明します。 要素が存在するのを関数に待機させる
最初に、正しいオプションを
リーリー@ViewChild
に渡すことです:そうしないと、dom ノードの代わりにコンポーネント インスタンスが取得されます。
*ngIf/*ngFor のような構造ディレクティブがない場合は、
を使用する必要があります{static: true, read: ElementRef}
を渡すこともできます。これにより、elementRef がngOnInit で使用可能になります
、それ以外の場合はAfterViewInit
nativeElement がまだ DOM にないため、コードは機能しないと思います。 以下は動作します (コンソール (test1) では、ngAfterViewInit の先頭でnativeElementがnullであることがわかります)。おそらく 1000 ミリ秒を追加する必要があります:
リーリー}
ここでは、NativeElement が DOM に表示されるのを待機するより決定的な方法 (setTimeout よりも) を説明します。 要素が存在するのを関数に待機させる