Comment utiliser Angular4 pour définir le focus à l'élément d'id
Je suis nouveau sur Angulaire, et suis en train de l'utiliser pour définir le focus sur l'entrée de l'id "1". Je suis en utilisant le code suivant:
@ViewChild('input1') inputEl: ElementRef;
puis plus tard dans le composant:
this.inputEl.nativeElement.focus();
Mais il ne fonctionne pas. Ce que je fais mal? Toute aide sera très appréciée.
stackoverflow.com/questions/38307060/...
L'entrée est généré dynamiquement, dans le cadre d'un PrimeNg modèle. J'utilise jquery pour définir l'id de l'élément, mais je n'ai aucune idée de comment régler [focus]. Est-il une autre voie?
Merci @Z. Bagley! L'une des réponses à la question que vous visées avait la solution.
L'entrée est généré dynamiquement, dans le cadre d'un PrimeNg modèle. J'utilise jquery pour définir l'id de l'élément, mais je n'ai aucune idée de comment régler [focus]. Est-il une autre voie?
Merci @Z. Bagley! L'une des réponses à la question que vous visées avait la solution.
OriginalL'auteur Pismotality | 2017-10-13
Vous devez vous connecter pour publier un commentaire.
composant
html
Voulez-vous dire de l'id de l'entrée? Je pense qu'il n'est pas possible.
Pourriez-vous expliquer pourquoi le setTimeout est-elle nécessaire? Cela semble contre-intuitif si le code est en cours d'exécution après la vue est init ed. Est-ce un piège courant?
Stijn Van Bael a ajouté
setTimeout()
pour éviterExpressionChangedAfterItHasBeenCheckedError
OriginalL'auteur Dmitry Grinko
L'une des réponses à la question posée par @Z. Bagley m'a donné la réponse. J'ai dû importer Renderer2 de @angulaire/core dans mon composant. Alors:
Merci @MrBlaise pour la solution!
Bien que l'utilisation de ElementRef a XSS des risques de sécurité, afin de Dwight solution est probablement plus sûr. Voir: angulaire.io/api/core/ElementRef
Ceci est également utile d'être au courant: github.com/angular/angular/issues/15674
OriginalL'auteur Pismotality
Voici un Angular4+ directive que vous pouvez ré-utiliser dans n'importe quel composant. Basé sur le code donné dans la réponse Niel T dans cette question.
Vous pouvez l'utiliser dans un modèle de composant comme ceci:
Donner la saisie d'un identifiant et transmettre l'id de la
cssSelector
propriété de la directive. Ou vous pouvez passer n'importe quel cssSelector vous le souhaitez.Commentaires de Niel T:
OriginalL'auteur rmcsharry
Cela l'a aidé à m' (ionique, mais l'idée est la même)
https://mhartington.io/post/setting-input-focus/
modèle:
dans le contrôleur:
OriginalL'auteur Максим Коровин
Ici est une directive que vous pouvez utiliser dans tout composant:
Utilisation:
OriginalL'auteur ACDev
J'ai aussi face à un même problème, après quelques recherche j'ai trouvé une bonne solution comme @GreyBeardedGeek meantioned que setTimeout est la clé de cette solution.Il est tout à fait correcte. Dans votre méthode, vous avez juste besoin d'ajouter un setTimeout et votre problème sera résolu.
OriginalL'auteur Abhijeet