Ich möchte markAsDirty
alle Steuerelemente in einem FormGroup
.
92
Fand heraus, dass Object.keys
damit umgehen kann ..
Object.keys(this.form.controls).forEach(key => {
this.form.get(key).markAsDirty();
});
Verwenden Sie für Angular 8+ Folgendes (basierend auf der Antwort von Michelangelo):
Object.keys(this.form.controls).forEach(key => {
this.form.controls[key].markAsDirty();
});
Cannot invoke an expression whose type lacks a call signature. Type 'AbstractControl' has no compatible call signatures.
Weiß jemand warum?Für das, was es wert ist, gibt es eine andere Möglichkeit, dies zu tun, ohne Object.keys (...) Magie verwenden zu müssen:
quelle
Die akzeptierte Antwort ist für eine flache Formularstruktur korrekt, beantwortet jedoch die ursprüngliche Frage nicht vollständig. Für eine Webseite sind möglicherweise verschachtelte FormGroups und FormArrays erforderlich. Dies muss berücksichtigt werden, um eine robuste Lösung zu erstellen.
quelle
instanceof
immer arbeiten , nachdem sie von Typoskript transpiled werden?instanceof
ist kein TypeScript-spezifisches Schlüsselwort ( developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… ). Auch derclass
Datentyp ist nicht .Es scheint, dass die
get
Funktion zum Abrufen bestimmter Werte in Ihrem Formular in Angular 8 nicht mehr funktioniert. Daher habe ich sie auf der Grundlage der Antwort von @Liviu Ilea gelöst.quelle
Mit der Antwort von @Marcos habe ich eine Funktion erstellt, die als Übergabe einer formGroup als Parameter aufgerufen werden kann. Sie markiert alle untergeordneten FormGroup-Steuerelemente als verschmutzt, um sie beispielsweise an mehreren Stellen im Code verwendbar zu machen, an denen sie in einen Dienst eingefügt wird.
ich hoffe es hilft ;)
quelle
quelle
Das ist es, was für mich funktioniert
quelle
Ich erstelle diese Funktion, um sie zu erstellen. * Ich habe ein Steuerelement mit dem Namen 'order' und übergebe ihm den Index.
quelle