то, что я пытаюсь сделать
- динамически создавать компоненты, используя
componentFactoryResolver
- добавлять динамически созданные компоненты в
ViewContainerRef
с помощью insert()
методов - с помощью метода
viewContainerRef
get(index)
получить ссылку на базовый компонент, связанный с представлением. цель состоит в том, чтобы иметь доступ к свойствам компонента, таким как 'id' к
, создание динамических компонентов c и их вставка выполняется достаточно легко, если вы следуете динамическому c компонентный загрузчик пошаговое руководство по Angular .io
то, на что я не нахожу никаких ссылок, это то, как достичь третьей пули.
, например, учитывая следующее добавляются компоненты Dynami c (при условии, что ComponentX ссылается на реальные компоненты в классе)
addComponents(vContRef: ViewContainerRef, factoryRslv: ComponentFactoryResolver) {
const items = [ComponentA, ComponentB, ComponentA];
items.forEach( (comp, index) => {
const factory = factoryRslv.resolveComponentFactory(comp);
const compRef = vContRef.createComponent(factory);
// Purposefully setting a property in the dynamic component so as to retrieve it later
compRef.instance.id = index;
});
}
на этом этапе в viewContainer должно быть 3 компонента. то, с чем я борюсь, это
- Как ссылаться на экземпляр компонента после того, как он был создан
, выполняя следующие действия
logViewContainerIds(vContRef: ViewContainerRef) {
for( let i = 0; i < vContRef.children.length; i++ ) {
const childView = vContRef.get(i);
// the 'get' method returns a view.
}
}
, как показано выше, метод get()
в viewContainerRef возвращает ViewRef
, а я пытаюсь получить Component, связанный с этим представлением. это позволит мне получить доступ к свойствам компонента. ie childView.id
;
Надеюсь, мне не хватает чего-то, что очевидно для других.
Любая помощь приветствуется.
спасибо.