При создании более сложных реактивных форм я наткнулся на проблему, в то время как вложенные реактивные группы более одного раза.
Итак, у меня есть два сценария:
Компонент формы -> Частичный компонент формы -> Пользовательский компонент ввода
Компонент формы -> Пользовательский компонент ввода
Цель состоит в том, чтобы прослушать событие ngSubmit в пользовательском компоненте ввода, чтобы показать его состояние ошибки.
В моем пользовательском компоненте ввода я внедряю ReactiveFormsDirective через декоратор @Host (). Однако, если компонент вложен, как в сценарии 1, он никогда не получает никаких событий.
Я предполагаю, что проблема в этом сценарии связана с "неправильным" ControlContainer, который он пытается получить. @Host () просто просматривает цепочку инжектора, пока не достигнет хоста, а не дальше. Однако этот FormControlDirective ничего не знает о отправке формы.
Если бы это было так, я бы попытался передать ControlContainer частичному компоненту, чтобы сделать его доступным для компонента ввода.
viewProviders: [ { provide: ControlContainer, useExisting: FormGroupDirective } ]
К сожалению, это не работает так, как ожидалось.
Чтобы сделать это более осязаемым, я создал здесь простой пример: https://stackblitz.com/edit/angular-7rmpvt
Было бы здорово получить некоторую помощь здесь о том, почему это ведет себя так, как это происходит, и как создать хорошее решение.