我的角度应用程序中有一个应用程序组件。
@Component({
selector: my-container',
template: `<div [innerHTML]="infoComponentHtml"></div>`
})
export class MyContainerComponent implements AfterViewInit {
@Input() infoComponentHtml: string = "";
constructor(private componentFactoryResolver: ComponentFactoryResolver){
}
ngAfterViewInit(): void {
if(this.infoComponentHtml){
??????
append this.infoComponentHtml dynamically
}
else{
??????
append "<default-content></default-content>" dynamically
}
}
}
this.infoComponentHtml
格式如下"<component-name></component-name>"
this.infoComponentHtml
是来自另一个组件的第三方组件。因此,我不知道它的组件类名称。
如何编译并添加附加组件?
答案 0 :(得分:0)
可以使用结构指令*ngIf
:
HTML:
<ng-container *ngIf="showInfoComponent; else defaultContent">
<infoComponent></infoComponent >
</ng-container>
<ng-template #defaultContent>
<default-content></default-content>
</ng-template>
更新:
您不能使用innerHTML
加载组件。为了动态加载组件,您需要将组件infoComponentHtml
设置为Type<Component>
;
@Input() infoComponentHtml: Type<Component>;