在静态解析符号值时遇到错误。调用函数' CreateCustomComponent',不支持函数调用

时间:2017-02-17 04:58:33

标签: angular angular2-aot angular2-custom-component

创建自定义组件时出现以下错误。

  

在静态解析符号值时遇到错误。调用函数' 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插件中使用这些组件输入和输出。

1 个答案:

答案 0 :(得分:3)

升级CLI版本后我也遇到了这个问题。它与AOT编译器有关。

您可以通过在app模块中的另一个函数中导​​出和包装函数来解决此问题(必须是app模块),然后使用导出的函数,如下所示:

export function doCreateCustomComponent(){
  return CreateCustomComponent(...);
}

@NgModule({ ... 
declarations: [doCreateCustomComponent], 
bootstrap: [doCreateCustomComponent]
... })
export class AppModule { }

(我稍微简化了你的代码)