Cómo validar OwnerId duplicado en formArray . Estoy intentando instalar este @rxweb/reactive-form-validators pero no funciona. Este es mi código de demostración Stackblitz
HTML:
<div class="col-12 col-sm-12 col-md-12 col-lg-12 col-xl-12 d-flex" [formGroupName]="i" *ngFor="let driver of nameDriverControl.controls; let i=index"> <label>{{i+1}}.Name</label> <input class="form-control" type="text" id="name" name="name{{i}}" formControlName="name" ><br/> <label>{{i+1}}.Owner Id</label> <input class="form-control" type="text" id="ownerId" name="ownerId{{i}}" inputmode="numeric" dashFormat formControlName="ownerId" maxLength="14"> <div class="col-2 col-sm-2 col-md-2 col-lg-2 col-xl-2"> <div class="form-group mb-0" *ngIf="i !== 0"> <button class="btn btn-danger" (click)="removeDriver(i)"> Delete </button> </div> <div class="form-group mb-2"> <button *ngIf="i >= 0 && i < 1" type="button" [hidden]="nameDriver.length > 3" (click)="addDriver()" class="btn btn-primary"> Add </button> </div> </div> </div>Componente
createDriver () { return new FormGroup({ name: new FormControl(null, Validators.required), ownerId: new FormControl(null, Validators.required) }) }Puede usar el validador unique de la última versión de @rxweb/reactive-form-validators ( 2.1.3 ).
Después de la instalación, debe importar @rxweb de esta manera:
import { RxwebValidators } from '@rxweb/reactive-form-validators'; Luego, en sus métodos createDriver , agregue un validador unique para ownerId de propietario de esta manera:
createDriver () { return new FormGroup({ name: new FormControl(null, Validators.required), ownerId: new FormControl("", RxwebValidators.unique( { message: 'You must enter a unique OwnerId' } )) }) }Y en su plantilla HTML puede agregar un mensaje de error como este:
<small class="form-text text-danger" *ngIf="driver.controls.ownerId.errors">{{driver.controls.ownerId.errors.unique.message}}<br/></small>Aquí hay una muestra de trabajo que he creado para usted: StackBlitzLink
Y el resultado:
Consulte esto para obtener más información sobre la validación unique .