如何使用/创建动态模板来编译具有角2.0的动态组件?

如何使用/创建动态模板来编译具有角2.0的动态组件?

我也想动态创造模板。这应该用于构建一个ComponentType在…运行时和地点(甚至替换)它在托管组件的某个地方。

直到RC4我用ComponentResolver,但在Rc5中,我得到了信息:

ComponentResolver不支持动态编译。使用ComponentFactoryResolver连同@NgModule/@Component.entryComponents或者用Analysis_for_entry_Components提供程序代替。仅用于运行时编译,您也可以使用Compiler.compileComponentSync/Async.

我找到了这份(官方的)文件

角2同步动态元件创建

明白我可以用任何一种

  • 一种动态

    ngIf

    带着

    ComponentFactoryResolver

    。,如果我将已知的组件传递到托管

    @Component({entryComponents: [comp1, comp2], ...})

    -我可以用

    .resolveComponentFactory(componentToRender);

  • 实际运行时编译

    Compiler...

但问题是如何使用Compiler?上面的说明说我应该打电话给:Compiler.compileComponentSync/Async-那是怎么回事?

例如。我想创造(基于某些配置条件)这种模板适用于一种设置

<form>
   <string-editor     [propertyName]="'code'"
     [entity]="entity"
   ></string-editor>
   <string-editor     [propertyName]="'description'"
     [entity]="entity"
   ></string-editor>
   ...

在另一种情况下,这个(string-editor被替换为text-editor)

<form>
   <text-editor     [propertyName]="'code'"
     [entity]="entity"
   ></text-editor>
   ...

诸若此类(不同编号/日期/参照)editors)按属性类型,跳过了某些用户的一些属性.)。即。这是一个例子,真正的配置可以生成更多不同和复杂的模板。

这个模板正在改变所以我不能用ComponentFactoryResolver通过现有的.。我需要解决办法Compiler


AOT和JitCompiler(原RuntimeCompiler)

您想在AOT(提前编译)中使用这些特性吗?你得到的是:

错误:遇到静态解析符号值的错误。不支持函数调用。考虑将函数或lambda替换为导出函数的引用(原始.ts文件中的位置65:17),解析./node_modules/@angular/compiler/src/compiler.d.ts,中的符号编译器_提供者

请留下你的评论,在这里投票:

AOT能支持使用编译器_提供者的/Will/Will代码吗?


繁星点点滴滴
浏览 670回答 4
4回答
打开App,查看更多内容
随时随地看视频慕课网APP