Angular 2 scheint Probleme mit der Validierung zu haben, wenn sich eine Dateieingabe ändert.
Ich machte ein Plunk, um dieses Problem zu veranschaulichen:
Ich mache eine formGroup wie
%Vor%Und in der Funktion validateFile erstelle ich eine Warnung und melde mich an der Konsole:
%Vor%Plunkr, um das Problem zu illustrieren: Ссылка
Die Validierung wird beim Initialisieren der Seite ausgeführt, wird jedoch nicht jedes Mal ausgeführt, wenn Sie die Datei zum Hochladen ändern.
Gibt es eine Lösung für dieses Problem?
Ich habe es mit kemsky Antwort und Sebastiens Kommentar behoben. Ich habe einen ngValueAccessor gemacht, der sich bei jeder Eingabe mit type file registriert.
Plunkr kann hier gefunden werden.
Relevanter Code + Erklärung unten:
Dies fügt einen ControlValueAccessor für Dateieingaben hinzu, der irgendwann Teil des eckigen Frameworks selbst sein könnte ( # 7341 ) . Eine Dateieingabe funktioniert anders als andere Steuerelemente. Dieser Codeabschnitt stellt sicher, dass die ausgewählten Dateien als Wert gelesen werden:
%Vor%Und für die 'erforderliche' Validierung habe ich einen Validator erstellt, den ich benutze, indem ich die statische validate-Methode zur Datei FormControl für ReactiveForms hinzufüge. (oder als Richtlinie für vorlagengesteuerte Formulare).
%Vor%Das Erstellen meines Formulars sieht folgendermaßen aus:
%Vor%Und für den html:
%Vor%Tags und Links angular angular2-forms