Я работаю над «мастером» компонента формы, который настраивает форму, которую пользователь должен заполнять в разделах. Сами разделы определяются динамически. Мастер создает реактивную форму, задает директивы formGroup
и formGroupName
, а затем использует ComponentFactoryResolver
для динамической генерации компонента, отвечающего за отображение входных данных для каждого раздела формы.
Я заново создал базовую демонстрацию здесь: https://stackblitz.com/edit/angular-issue-repro2-pdtlnj
Здесь есть два вопроса:
Единственный способ заставить это работать в приложении - это указать viewProvider
в динамически сгенерированных компонентах. Это не идеально, так как это дополнительные издержки, которые будут повторяться - возможно ли указать этих провайдеров на хосте, где генерируется компонент? Я пытался добавить ControlContainer
провайдеров к Injector
, который он создает, но ничего не помогло.
Другой вопрос: можно ли настроить TestBed
, чтобы я мог тестировать только «дочерние» компоненты, не воссоздавая структуру хоста с FormGroup
и FormGroupName
? Я подозреваю, что если первый вопрос будет решен, я мог бы сделать что-то подобное в тестах.