Не удалось проверить угловую форму, возникли проблемы? - PullRequest
0 голосов
/ 17 октября 2019

У меня есть форма или модель книги и книги:

class Book {
  id: number;
  active: boolean;
  name: string;
}
bookForm: FormGroup;

results: Book[];

ngOnInit() {
  this.results = [
    {id: 1, active: true, name: aaa},
    {id: 2, active: true, name: bbb},
    {id: 3, active: true, name: ccc},
  ];

  this.bookForm = this.fb.group({
    bookArray: this.fb.array(results.map(res => this.fb.group({
      id: [res.id],
      active: [res.active],
      name: [res.name, {
        validators: [BookValidators.required(`name`)],
        asyncValidators: [BookValidators.unique(`name`, (value: string) => {
              return this.service.checkNameUnique(value, res.id);
        })],
        updateOn: 'blur'
      }]
    })))
  });
}

Поэтому я запускаю formArray с существующими результатами и показываю таблицы formArray

id   active   name
1     true    aaa
2     true    bbb
3     true    ccc 

в этой таблице, столбец имени является редактируемым. Когда я редактирую 'aaa' в 'bbb', проверка формы очевидно завершится неудачно, потому что она имеет уникальную проверку с updateOn: 'blur'. вопрос: если я сохраню это изменение: 'aaa' -> 'bbb'. затем щелкните другие поля имени, другие поля имени не могут быть отредактированы. Это кажется разумным, но мне это просто не нужно.

1 Ответ

0 голосов
/ 17 октября 2019

Если вы сохраните изменение aaa -> bbb, другие поля будут отключены. Angular не делает этого сам, у вас должен быть какой-то код, чтобы отключить другие поля. Напишите немного HTML-кода, чтобы получить больше информации.

Для получения пользовательских ошибок необходимо установить валидаторы. Смотри здесь

...