Angular2: Validierung für den Eingabetyp="Datei" / wird nicht ausgelöst, wenn die zu übertragende Datei geändert wird

8

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?

    
S. Robijns 27.01.2017, 08:09
quelle

3 Antworten

20

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%     
S. Robijns 30.01.2017, 14:36
quelle
4

Angular 4+ hat seine Hostbindings geändert.

%Vor%     
Fritz 23.10.2017 13:30
quelle
2

Die Eingabe vom Typ file wird derzeit nicht unterstützt, siehe # 7341

    
kemsky 27.01.2017 08:17
quelle

Tags und Links