Моя цель : создать пользовательские компоненты на основе композиции angular компонентов материала
Задача : обертывание mat-form-field и mat-error в компоненты не запускает проверку, когда пользователь нажимает кнопку отправки на родительском компоненте.
Я создал демо здесь: https://stackblitz.com/edit/angular-ysnmo2
И мой вопрос / примечания:
- Что такое правильный способ добиться этого? в демоверсии есть простой ввод + проверка, но позже будет много более сложных компонентов
- Я попытался реализовать ControlValueAccessor, но он не сработал для меня, или, возможно, я не смог реализовать это , Я получаю сообщение об ошибке Невозможно установить валидатор свойства объекта [Object Object], который имеет только getter , когда я пытаюсь связать ngControl с атрибутом formControl, это в демонстрационном примере в cva- input .
Помимо # 2, предназначен ли ControlValueAccessor для компонентов этого типа? У меня сложилось впечатление, что это было введено для поддержки простых компонентов, подобных вводу, которые будут помещены в поле mat-form-field и работают с другими компонентами материала, это не то, что я пытаюсь сделать.
Найден трюк, который вызовет проверку, он вызывает метод markAllAsTouched и следующий updateValueAndValidity в каждом элементе управления formGroup. Но моя самая большая проблема здесь, если я делаю это правильно? И, во-вторых, как работает проверка форм, и почему она не работает, когда она заключена в отдельный компонент?