Как создать валидатор стоимости для проверки, уникальна ли строка - PullRequest
0 голосов
/ 28 апреля 2020

Я работаю над проектом angular и мне нужно создать пользователя. Не могу добавить новый объект с существующим элементом, для которого я попытался добавить пользовательский валидатор, который проверяет, существует ли уже значение поля Matricule в моя база данных или нет, но я обнаружил:

ОШИБКА TypeError: Невозможно прочитать свойство 'Matriculesoldlist' из неопределенного в CheckIfNotIntoarray

Здесь я знаю, что моя проблема заключается в том, что я создал component Matriculesoldlist = [] (служебные данные еще не там), но когда я объявил некоторые значения в массив, например Matriculesoldlist = ["Mat1", "Mat2"]; Я не вижу разницы (та же проблема).

Итак, ребята, как я могу проверить, является ли поле matricule уникальным или не использует служебные данные.

Мой код:

idSearchForm = this.fb.group({
Matricule: ['', [Validators.required,this.CheckIfNotIntoarray]],// Here is the costom validator
    Icon: [''],
    Departement: [''],
    Chauffeur: [''],
    Marque: ['',Validators.required],
    Modele: [''],
    Annee: [''],
    TypeE: [''],
    Capacite: [''],
    Conso: [''],
    Poid: [''],
    Cylindree: [''],
    NuméroC: [''],
    Date_circulation: null,
    Date_reforme: null,
    NPlace: [''],
    Puissancef: [''],
    Puissancer: ['']
  });
  Matriculesoldlist =[];
ngOnInit() {
this.service.get_cars().subscribe((data)=>{
      console.log(data);
      this.UIGestionlist = json2array(data);
      this.Listtrackigobjct = this.UIGestionlist[3];
      this.Listtrackigobjct.forEach(e=>{this.Matriculesoldlist.push(e.FullName);

      });
}


  CheckIfNotIntoarray(control: AbstractControl): { [key: string]: boolean } | null {
  this.Matriculesoldlist.forEach(element => {
    if(control.value == element){
      return null;
    }
  });  
  return { 'intoarray': true };
}
...