Ответ 1
Легким способом добавления динамического компонента fancy-button
может быть следующее:
1) Добавить компонент в массив entryComponents
вашего модуля
@NgModule({
imports: [ BrowserModule ],
declarations: [ AppComponent, GridStackComponent, FancyButtonComponent ],
entryComponents: [ FancyButtonComponent ], // <== here
bootstrap: [ AppComponent ]
})
export class AppModule { }
2) Получить root node из скомпилированного компонента
constructor(private vcRef: ViewContainerRef, private componentFactoryResolver: ComponentFactoryResolver) { }
getRootNodeFromParsedComponent(component) {
const componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);
const ref = this.vcRef.createComponent(componentFactory, this.vcRef.length, this.vcRef.injector);
const hostView = <EmbeddedViewRef<any>>ref.hostView;
return hostView.rootNodes[0];
}
3) Используйте его в любом месте
const fancyBoxElement = this.getRootNodeFromParsedComponent(FancyBoxComponent);
$('#someId').append(fancyBoxElement);
Здесь Пример плунжера для вашего случая
Если вы ищете что-то более сложное, тогда есть много ответов, где вы можете использовать компилятор angular, чтобы он работал
- Динамически загружать существующие компоненты angular 2 Final Release
- Эквивалент компиляции $в angular 2
- Как я могу использовать/создавать динамический шаблон для компиляции динамического компонента с angular 2.0?
- Angular 2.1.0 создать дочерний компонент "на лету" динамически
- Как вручную использовать ленивую загрузку модуля?