problem description
I have five Input under one FormArray. Clicking the add
button will make push
a new FormControl
and have a Validator
that verifies whether this input
has the same value as the other four input
. Now I don"t know how to make Angular
correct, because the current verification is always true
. So to verify is to verify whether you are equal to yourself.. I mean, there must be a FormControl
which is itself of the newly added FormControl
, so the result is that there is always a value equal to the one currently being verified. It seems that Angular
always sets the value of FormControl
first and then verifies it. For the time being, no solution has been found. Which god can tell me what to think?
the environmental background of the problems and what methods you have tried
Chrome,Angular6.
I have tried to find a value to determine whether the current FormControl
can skip verifying only the remaining four, but I can"t find it and I don"t have any ideas.
related codes
/ / Please paste the code text below (do not replace the code with pictures)
html:
<div id="types" formGroupName="newTypes">
<div class="addGroup">
<div class="articleLabelDiv" *ngFor="let type of newTypes.controls; let i = index">
<input type="text" class="simpleInput" [formControlName]="i">
<button type="button" class="simpleButton" (click)="deleteType(i)"><mat-icon>close</mat-icon></button>
</div>
<button type="button" *ngIf="newTypes.length<5" [disabled]="newTypes.invalid" (click)="addType()" mat-raised-button color="primary"><mat-icon>add</mat-icon></button>
</div>
Form Group:
this.articleMsg = new FormGroup({
title: new FormControl(this.data.article.title, ),
labels: new FormArray([]),
newTypes: new FormArray([]),
});
validator: in component
private isExistedValidator(checkName: string): ValidatorFn {
return (control: AbstractControl): {[key: string]: any} | null => {
if (checkName === "label") {
return this.labels.controls.every(label => {
return label !== control;
}) ? {"isExisted": true} : null ;
what result do you expect? What is the error message actually seen?
the expected result is that there are currently several input, how to verify that the values of these input are all different, and an error will be displayed as long as they are the same.