Angular. Получить все ошибки FormGroup

Для целей разработки удобно получать все ошибки разом из контролов группы или массива. Встроенного метода нет, готовыми вызовами можно получить ошибки для одного контрола.

export class FormUtils {
  /**
   * Get all errors of FormGroup
   * @param control - target form control
   */
  static getControlErrors(control: AbstractControl): ValidationErrors | null {
    if (control instanceof FormControl) {
      // Return FormControl errors or null
      return control.errors ?? null;
    }
    if (control instanceof FormGroup) {
      const groupErrors = control.errors;
      // Form group can contain errors itself, in that case add'em
      const formErrors = groupErrors ? { groupErrors } : {};
      Object.keys(control.controls).forEach(key => {
        // Recursive call of the FormGroup fields
        const error = FormUtils.getControlErrors(control.get(key));
        if (error !== null) {
          // Only add error if not null
          formErrors[key] = error;
        }
      });
      // Return FormGroup errors or null
      return Object.keys(formErrors).length > 0 ? formErrors : null;
    }
    return null;
  }
} 

Похожие записи

RxJs Subjects

Выдержки из доклада Андрея Алексеева (Tinkoff) про RxJs (Subject, Behaviour Subject, Replay Subject, Async Subject). Применение в Angular.

Angular. Когда не надо отписываться в RxJS?

В async pipe за вас отпишется Angular. Во всех остальных случаях лучше отписываться самостоятельно. Допускается не отписываться в потоках, где будет гарантировано вызван complete.

Angular. Отличие baseHref от deployUrl

  • deployUrl - задаёт путь для статических (js, css) файлов в index.html.
  • baseHref - определяет base, используется в ссылках и маршрутизации (routing) Angular