这是函数,我用来动态添加带有其他HTML元素的组件。我正在尝试在哪个元素中添加Angular自定义指令和属性。而且它不起作用。 :(
addComponent(component:any){
let componentRef = this.componentFactoryResolver
.resolveComponentFactory(component)
.create(this.injector);
this.appRef.attachView(componentRef.hostView);
const domElem = (componentRef.hostView as EmbeddedViewRef<any>)
.rootNodes[0] as HTMLElement;
var newcontent = document.createElement('div');
newcontent.innerHTML = `<h1 myDirective [myAttr]="myVar" myAttr2="myVar2">${this.demoText}</h1>`;
domElem.appendChild(newcontent);
document.getElementById("testid").appendChild(domElem);
}
这里 myDirective是自定义角度指令。 myAttr,myAttr2是自定义角度指令的属性。 myVar,myVar2可以是相同组件的静态文本或变量。
答案 0 :(得分:0)
在Angular中更改innerHTML不是一个好主意。您必须创建一个指令,在其中引入Renderer2实例以呈现所需的组件。请阅读以下文章=> https://alligator.io/angular/using-renderer2/ 问候 迈克尔