document.create
не создает угловой компонент, а только элемент DOM. Если вы хотите динамически создать Angular-компонент, вы должны внедрить ComponentFactoryResolver
service
constructor(private componentResolver: ComponentFactoryResolver) { }
, который позже можно использовать следующим образом:
// create factory for icon component
const factory = this.componentResolver.resolveComponentFactory(MyIconComponent);
// create icon component and append it next to anchor element
const icon = this.anchor.createComponent(factory);
// assign some value to component input
icon.instance.name = 'icon name';
Элемент привязки может быть получен с использованием ViewChild
, например. если ваш шаблон компонента выглядит так:
`<div #iconsHere></div>`
вам нужно будет добавить следующую аннотацию:
@ViewChild('iconsHere', {read: ViewContainerRef}) anchor: ViewContainerRef;
Обратите внимание, что динамически созданные компоненты должны быть объявлены как входные компоненты в вашем модуле.
@NgModule({
...
entryComponents: [ MyIconComponent ]
})
export class AppModule { }
Демо-версия:
https://stackblitz.com/edit/angular-jukjib