Является ли элемент, который директива объявлена ​​в ViewContainerRef для директивы? - PullRequest
0 голосов
/ 07 февраля 2019

Когда мы конструируем вставить ViewContainerRef в директиву, это ViewContainerRef элемент, на котором объявлена ​​директива.

Например, <p [someDirective]="value"></p>

И с конструктороминъекция:

constructor(vc: ViewContainerRef) {
    //The ViewContainerRef is bound to the p element
}

Если мы теперь сделаем vc.createComponent(...), будет ли этот компонент создан внутри элемента p?

1 Ответ

0 голосов
/ 07 февраля 2019

Когда мы конструируем внедрить ViewContainerRef в директиву, это ViewContainerRef элемент, на котором объявлена ​​директива.

Да, он ссылается на тот же элемент DOM, на который ссылается директива,

Например:

@Directive({...})
public constructor MyDirective {
    public cosntructor(el: ElementRef, view: ViewContainerRef) {
        console.log(el.nativeElement === view.element.nativeElement); // prints TRUE
    }
}

Если мы сейчас сделаем vc.createComponent (...), будет ли этот компонент создан внутри элемента p?

Да, потому что ViewContainerRef имеет много просмотров.У него есть методы length и get(index: number), которые позволяют вам получить ViewRef прикрепленных представлений.

Таким образом, вы можете вызывать vc.createComponent(...) несколько раз, и у этого ViewContainerRef будет больше Просмотры добавлены к нему.Добавленные виды - это представление хоста из нового компонента.

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