我有来自后端的 HTML 元素字符串,元素上有自定义指令。
例如:
str = "abc xyz <span [customDirective]='2'>qwerty</span> pqrs"
我想将其呈现为 HTML,所以customDirective
请参与其中。
我在没有 -aot(just ng serve
)的情况下使用了几个解决方案
但是 -aot( ng serve -aot
) 或生产构建 ( ng build -prod
)没有任何效果
1. 使用 [innerHTML] 指令
正确呈现 HTML 字符串,但这从元素中清除了指令。
2.动态加载组件
我尝试了这个解释清楚的解决方案 这在没有 -aot的情况下工作
但是当我使用 -aot (或在生产版本中)运行时出现此错误:
“没有找到 RuntimeComponentModule 的 NgModulele 元数据”
3.动态加载不同的组件
我尝试了另一个解决方案 这也可以在没有 -aot 的情况下工作
但是当我使用 -aot (或在生产版本中)运行时出现此错误:
未加载运行时编译器
4.尝试解决#3中的错误
为了解决这个问题,我以这种方式加载了编译器并用它来创建一个组件。
const compilerFactory: CompilerFactory =
platformBrowserDynamic().injector.get(CompilerFactory);
this.compiler = compilerFactory.createCompiler([]);
这在没有 -aot 的情况下也有效
使用 -aot(或在生产构建中)运行时出现此错误:
已创建具有不同配置的平台。请先销毁它。
任何人遇到类似的问题,请在这里帮助。
我也经历了动态组件加载器 ,但它只将数据动态传递给已经定义的组件。
在这里,我希望使用动态模板为我从后端获取的字符串动态创建组件。