0

here i am using template forms for binding the values under array and there is inline edit available for each row, issue is that, if i am giving duplicate for 3 rows under order number or the name, it shows error message in only one row and rest duplicate row is left without showing error message, and when changing the duplicate value to the correct value, then based on sorting the duplicate error message moves to the sorted place of the corrected value.

TS::

 //Duplicate check for order number public checkForDuplicate(event: any) { this.agentNotinView.map((x: any) => { x.error = false; }); var valueOrderNumArr = this.agentNotinView.map(function (item: any) { return +item.orderNum; }); var isDuplicate = valueOrderNumArr.some(function (item: any, idx: any) { return valueOrderNumArr.indexOf(item) != idx; }); if (isDuplicate) { event.error = true; } if (event.orderNum == null || event.orderNum == '') { this.disableSave = true; } this.agentNotinView = this.agentNotinView.sort( (a: any, b: any) => a.orderNum - b.orderNum ); } //Duplicate check for column display name public checkForNameDuplicate(event: any) { this.agentNotinView.map((x: any) => { x.colerror = false; }); var valueColNameArr = this.agentNotinView.map(function (item: any) { return item.columnDisplayName; }); var isDuplicate = valueColNameArr.some(function (item: any, idx: any) { return valueColNameArr.indexOf(item) != idx; }); if (isDuplicate) { event.colerror = true; } if (event.columnDisplayName == null || event.columnDisplayName == '') { this.disableSave = true; } } 

html:

 <div class="row"> <div class="col-9"> <input type="text" [(ngModel)]="customer.value" [ngModelOptions]="{ standalone: true }" (focusout)="checkForNameDuplicate(customer)" class="block form-control" /> <span *ngIf="customer.colerror" class="text-danger"> Duplicate Entry</span > <span *ngIf="customer.columnDisplayName == ''" class="text-danger" >Cannot be empty</span > </div> <div class="col-3"> <input type="text" [(ngModel)]="customer.order" [ngModelOptions]="{ standalone: true }" class="w-50 block form-control" (focusout)="checkForDuplicate(customer)" /> <span *ngIf="customer.error && customer.orderNum != ''" class="text-danger" > Duplicate Entry</span > <span *ngIf="customer.orderNum == ''" class="text-danger" >Cannot be empty</span > </div> </div> 

DEMO

first scenarioa

so in this first image, i am not able to get duplicate error message in other place where i ave used same number and same name, basically if i have 3 duplicates, i need to show duplicate error message under 2 rows.

if there is any better approach also i am fine to go with it

2
  • First, this is not reactive form, this is template form. Secondly, you only set error on this line event.error = true; and that event var is the row you currently focusout. That's why you only see 1 instead of all errors. Commented Dec 8, 2022 at 18:47
  • thanks Jimmy for your response, i will check Commented Dec 9, 2022 at 4:58

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.