Angular 2:在innerHTML中加载动态组件
我有2个@组件,比如说和。现在,我必须在say中动态加载innerHTML,例如,如下所示 组件1.htmlAngular 2:在innerHTML中加载动态组件,angular,typescript,webpack,typescript2.0,Angular,Typescript,Webpack,Typescript2.0,我有2个@组件,比如说和。现在,我必须在say中动态加载innerHTML,例如,如下所示 组件1.html <div [innerHTML]="domEl | safeHtml"></div> 在Angular2组件1类中 import { Component, OnInit, ViewEncapsulation } from '@angular/core'; @Component({ selector: 'component-1',
<div [innerHTML]="domEl | safeHtml"></div>
在Angular2组件1类中
import {
Component,
OnInit,
ViewEncapsulation
} from '@angular/core';
@Component({
selector: 'component-1',
templateUrl: './component-1.html',
encapsulation: ViewEncapsulation.None
})
export class Component1 implements OnInit {
public ngOnInit() {
this.domEl = '<component-2 data="1234"></component-2>'
}
}
导入{
组成部分,
奥尼特,
视图封装
}从“@angular/core”开始;
@组件({
选择器:“组件-1”,
templateUrl:“./component-1.html”,
封装:视图封装。无
})
导出类组件1实现OnInit{
公共ngOnInit(){
this.domEl=''
}
}
组件2已通过声明[]注入到app.module.ts文件中。另外,safeHtml是用于安全HTML转换的管道
即使如此,问题是组件2没有加载。有人能建议我如何解决这个问题吗
注:
- 如果我直接在component-1.html中包含component-2,它就会工作。但我们有一个无法动态注入组件2的情况
- 堆栈构建在Angular2、TypeScript和Webpack上
[innerHTML]=“…”
的HTML,但出于安全目的进行的清理除外。绑定、组件、指令。。。不会创建,因为如上所述,Angular会忽略内容。您可以做的是在运行时创建一个组件,如中所述。AFAIR有人构建了一个模块,使这变得更容易,但我不记得详细信息。不要加载innerHtml,而是使用带有ngIf或ngSwitch的模板。不能这样做,在我的情况下,这将不起作用。您不能将组件作为html注入。组件从阴影Dom渲染到真实Dom。当您使用innerHTML注入内容时,它应该是原始Html,而不是需要渲染管道的内容。正如我之前所说,您必须使用ngIf或ngSwitch