4

I want validate the item name text must be unique. I have refered SO links, but links examples are not working for me. I tried to comment on respective answer, but I don't have a much reputation to do that.

Link 1: Angular - Uniqueness validator in FormArray

Link 2 : Unique value validation in FormControl of FormArray

below is my current code:

import { Component,OnInit } from '@angular/core';
import { FormGroup,FormBuilder,FormArray } from "@angular/forms"
import { RxwebValidators } from "@rxweb/reactive-form-validators"


@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent  implements OnInit {

public uniqueRowForm: FormGroup; 

constructor(private fb:FormBuilder){

}


ngOnInit() {
  this.uniqueRowForm  = this.fb.group({
    items:this.fb.array([]),
  });
  this.adduserItem();
}

  

  adduserItem(){
    let items = <FormArray>this.uniqueRowForm.controls.items;
    items.push(this.fb.group({
      name:['',RxwebValidators.unique()]
    }));
  }

  

  
}

below is my HTML code:

<button (click)="adduserItem()">Add Item </button>
 <table class="table">
  <thead>
    <tr>
      <th scope="col">Item</th>
    </tr>
  </thead>
  <tbody>
    <tr [formGroup]="item" *ngFor="let item of uniqueRowForm.controls.items.controls;let i = index;">
     <td><input type="text" formControlName="name" class="form-control"  />
     <span *ngIf="item.controls.name.errors.unique">not unique</span>
     </td>
    </tr>
  </tbody>
</table>

Stackblitz example but not working as per my requirement : https://stackblitz.com/edit/angular-paqxqs?file=src%2Fapp%2Fapp.component.html

Please help.

1
  • If you open the developer console (F12) while viewing your stackblitz, you will see the issue. Correct it. Then, check to see that the validators package you are using actually has a validator named unique. Commented Jan 1, 2019 at 12:11

1 Answer 1

3

Just add ? at the end of your errors object to insure that it is not undefined.

<span *ngIf="item.controls.name.errors?.unique">not unique</span>
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.