Eckige 2-Fokus auf den ersten ungültige Eingabe nach Click/Event
Habe ich eine seltsame Anforderung und hatte gehofft, für etwas Hilfe.
Brauche ich, um den Fokus auf das erste Gefundene, ungültige Eingabe von einem Formular nach dem Klick auf einen button (nicht submit). Die form ist ziemlich groß, und so die Ansicht zu scrollen, um die ersten ungültige Eingabe.
Diese AngularJS Antwort wäre, was würde ich brauchen, aber nicht wissen, wenn eine Richtlinie wie diese wäre der Weg zu gehen, in den Winkel-2:
Setzen Sie den Fokus auf die erste ungültige Eingabe in AngularJs Formular
Was wäre der Winkel 2 Weg, dies zu tun? Vielen Dank für alle Hilfe!
- Dies ist nicht eine sonderbare Voraussetzung. In Formularen mit vielen Feldern ist es Recht benutzerfreundlich zu scrollen, das erste Feld mit Fehler in der Ansicht auf "Absenden". Wenn keine ungültige Felder sind sichtbar, wenn der Benutzer den submit-button drücken, hätten Sie keine Idee, warum nichts passiert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das funktioniert für mich. Nicht die eleganteste Lösung, aber angesichts der Einschränkungen im Winkel-wir sind alle erfahren, die für diese Besondere Aufgabe, es macht den job.
Dieser funktioniert, so dass Sie Ausweichen, manipulieren des DOM. Es geht einfach um das erste element mit
.ng-invalid
auf der Seite durch diedocument.querySelector()
gibt das erste element in der zurückgegebenen Liste., Es zu benutzen:
Ich auch geschrieben das auf Eckige ' s Github-Seite: https://github.com/angular/angular/issues/13158#issuecomment-432275834
Kann ich leider nicht testen im moment, so könnte noch ein paar bugs, sollte aber vor allem dort.
Nur fügen Sie es Ihrem Formular.
Wenn Sie AngularMaterial, die MdInputDirective hat einen Fokus () - Methode, die Ihnen erlauben, um direkt den Fokus auf das Eingabefeld.
In die Komponente, nur ein Verweis auf alle Eingänge mit den @ViewChildren Anmerkungen, wie diese:
@ViewChildren(MdInputDirective) inputs: QueryList<MdInputDirective>;
Dann, die Einstellung, die den Fokus auf das erste ungültige Eingabe ist so einfach wie diese:
this.inputs.find(input => !input._ngControl.valid).focus()
Ich weiß nicht, ob das ist Gültiger Ansatz, oder nicht, aber das ist großartig für mich.
In HTML
Habe ich gemischt, der Ansatz von angularjs zugänglichen form-Richtlinie in diesem.
Verbesserungen sind erwünscht!!!
Habe ich eine Eckige Richtlinie um dieses problem zu lösen. Sie können es hier ngx-scroll-to-first-invalid.
Schritte:
1.Installieren Sie das Modul:
2.Importieren Sie die
NgxScrollToFirstInvalidModule
:3.Verwenden Sie die Direktive innerhalb einer form:
Hoffe, es hilft!
🙂
Einfache HTML-Lösung.
Wenn Sie nicht brauchen, zu Blättern , einfach den Fokus auf die erste gültige Eingabe, die ich benutze :
Dies ist für Vorlagen form hier. Wir konzentrieren uns auf das zweite element der invalidFields cuz, das erste ist das Formular ungültig zu.
Ich empfehlen, dies in einem Gottesdienst, bei mir funktionierte es so: