Ich habe eine FormArray
, deren Felder ich sofort validieren möchte. Ich bin über die FormArray
iterieren und für jedes Element (FormGroup
), ich überprüfe eine Bedingung, Deaktivieren der gültigen FormGroup
s zu vermeiden, den Benutzer zu ändern und setzen Fehler auf eine bestimmte FormControl
innerhalb der FormGroup
.Angular: setErrors funktioniert nicht innerhalb der Schleife
Unten ist mein Code. rows
ist die FormArray
.
response.forEach((item, index) => {
if (item.detailName.valid && item.detailNo.valid)
(<FormArray>this.detailForm.get('rows')).at(index).disable({
onlySelf: true
});
else if (!(item.detailName.valid && item.detailNo.valid))
if (!!item.detailName.value && !item.detailNo.value)
this.detailForm.get(['rows', index, 'detailName']).setErrors({
'invalidValue': true
});
else
this.detailForm.get(['rows', index, 'detailNo']).setErrors({
'invalidValue': true
});
});
Der Fehler wurde nicht wie beabsichtigt festgelegt. Diese Kontrolle wird als VALID
angezeigt, wenn ich console.log
es.
Update: Wickelte es von einem setTimeout
und es funktionierte.
Ich weiß nicht, ob es mit dem Problem zusammenhängt, aber die Bedingung in der siebten Zeile wird nie ausgeführt –
Warum nicht? Ich überprüfe, ob ein Wert existiert (nicht "") und es funktioniert. – karthikaruna
Ops, tut mir leid, ich lese "gültig" anstelle von "Wert" –