Définir le focus sur <input> élément
Je suis en train de travailler d'une application front-end Angulaire 5, et j'ai besoin d'avoir une zone de recherche cachés, mais sur le clic d'un bouton, la boîte de recherche doit être affiché et concentré.
J'ai essayé quelques moyens trouvés sur StackOverflow à la directive, mais ne peut pas réussir.
Voici un exemple de code:
@Component({
selector: 'my-app',
template: `
<div>
<h2>Hello</h2>
</div>
<button (click) ="showSearch()">Show Search</button>
<p></p>
<form>
<div >
<input *ngIf="show" #search type="text" />
</div>
</form>
`,
})
export class App implements AfterViewInit {
@ViewChild('search') searchElement: ElementRef;
show: false;
name:string;
constructor() {
}
showSearch(){
this.show = !this.show;
this.searchElement.nativeElement.focus();
alert("focus");
}
ngAfterViewInit() {
this.firstNameElement.nativeElement.focus();
}
La zone de recherche n'est pas centrée.
Comment puis-je le faire?
Vous devez vous connecter pour publier un commentaire.
Modifier le spectacle de la méthode de recherche comme cette
Vous devez utiliser le format html autofocus pour cela:
Remarque: si votre composant est conservé et réutilisé il ne autofocus la première fois que le fragment est créé. Cela peut être surmonté par avoir un mondial dom auditeur qui vérifie pour l'attribut autofocus à l'intérieur d'un dom fragment lorsqu'il est connecté, puis de le réappliquer ou focus via javascript.
Cette directive va instantanément se concentrer et de sélectionner tout le texte dans l'élément dès qu'il s'affiche. Cela peut nécessiter un setTimeout pour certains cas, il n'a pas été testé beaucoup.
Et dans le code HTML:
Je vais peser sur cette (Angulaire 7 Solution)
Pour rendre l'exécution après la boolean a changé et éviter l'utilisation de l'expiration du délai que vous pouvez faire: