Угловой DI пропустить до достижения верхнего уровня - PullRequest
0 голосов
/ 21 января 2019

У меня есть компонент ввода, который ищет FormGroupDirective через Angular DI, и он прекрасно работает, пока у меня не появится еще один FormGroupDirective.

Другими словами, у меня может быть что-то вроде этого

FormGroupDirective
--> input 1
--> input 2
--> input 3

Эти входные данные успешно находят эту директиву, однако, если я добавлю еще одну директиву

RootFormGroupDirective
--> FormGroupDirective1
    --> input 1

вход 1 получает FormGroupDirective1 вместо RootFormGroupDirective.

Я знаю, что существует декоратор @SkipSelf(), однако этот не подходит в этой ситуации, поскольку входной компонент может быть заключен в бесконечное количество компонентов.

Есть ли способ пропустить это FormGroupDirective1, когда есть еще один на более высоком уровне, или получить родительскую директиву этого?

Я нашел только, как получить родителей FormGroup, но это не имеет submitted.

1 Ответ

0 голосов
/ 22 января 2019

Решение довольно простое и неочевидное.Вы не должны использовать более одного FormGroupDirectrive в форме.Если мы посмотрим на FormGroupDirective в API, в path есть строка, которая говорит:

Возвращает массив, представляющий путь к этой группе.Поскольку эта директива всегда находится на верхнем уровне формы, это всегда пустой массив.

Это означает, что FormGroupDirective должен быть единственным.Моя ошибка заключалась в том, что я пытался передать свои экземпляры formGroup вниз по дереву, используя @Input() formGroup, что мешает директиве, которая вызвала проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...