Mon objectif ultime est de créer un autofocus sur un élément textarea. Je viens de penser à une solution pour appeler e.target.focus()
à l'événement onload
. Quelque chose comme:
<textarea rows="8" col="60" (load)='handleLoad($event)'>
et alors:
handleLoad(e){
e.target.focus();
}
Le problème est que angular ne reconnaît pas l'événement load
.
PS: J'ai essayé autofocus
une fois mais cela ne semble pas fonctionner.
Vous devriez pouvoir le faire avec le hook ngAfterViewInit:
import { ViewChild, ElementRef, AfterViewInit } from '@angular/core'
// ...
export class Component implements AfterViewInit {
@ViewChild('textarea') textarea: ElementRef
ngAfterViewInit() {
this.textarea.nativeElement.focus()
}
}
Où dans le modèle vous devez définir une variable de modèle:
<textarea #textarea rows="8" col="60"></textarea>
Essayez l'attribut HTML5 autofocus
:
<textarea rows="8" col="60" autofocus>
Toujours mieux (et beaucoup plus simple!) D'utiliser si possible l'API native DOM que de le faire en JavaScript :)
EDIT: Ce qui précède est incorrect. Voir mon commentaire ci-dessous.