创建自定义组件时出现以下错误。
在静态解析符号值时遇到错误。调用函数' CreateCustomComponent',函数调用不受支持 d。考虑使用对导出函数的引用替换函数或lambda,解析符号cus_input
我的文件如下所示。请问下面我的代码给我一个答案吗?
export class MyComponent {
constructor() {
console.log("Component created");
}
}
export function CreateCustomComponent( componentArgs: {
selector: string,
inputs: Array<string>,
template: string
}): Type<any> {
let comp = Component(componentArgs);
return comp.Class({
extends: MyComponent,
constructor: []
});
}
export let cus_input :any = CreateCustomComponent({selector: 'cus-inp',inputs : ["myinput"],template : '<input [value]="myinput" />'})
export const MY_INP_Component: any = [cus_input];
在&#34; app.modeule.ts&#34;
中导入如下所示 import { MY_INP_Component} from './customcomponent/core';
import { AppComponent } from './app.component';
@NgModule({
imports: [BrowserModule, FormsModule, HttpModule, RouterModule.forRoot(rootRouterConfig, { useHash: true })],
declarations: [AppComponent,
MY_INP_Component
],
bootstrap: [AppComponent],
})
export class AppModule { }
这里为什么动态创建组件意味着我有一组jquery插件,用于动态创建组件并在jquery插件中使用这些组件输入和输出。
答案 0 :(得分:3)
升级CLI版本后我也遇到了这个问题。它与AOT编译器有关。
您可以通过在app模块中的另一个函数中导出和包装函数来解决此问题(必须是app模块),然后使用导出的函数,如下所示:
export function doCreateCustomComponent(){
return CreateCustomComponent(...);
}
@NgModule({ ...
declarations: [doCreateCustomComponent],
bootstrap: [doCreateCustomComponent]
... })
export class AppModule { }
(我稍微简化了你的代码)