cellRendererFramework没有组件工厂找到ag-grid angular2

时间:2017-09-28 09:59:06

标签: angular angular-cli ag-grid ag-grid-ng2

尝试将angularRendererFramework(v13.1.2)与angular2一起使用,但却收到此错误:

ProductComponentComponent.html:7错误错误:找不到[object Object]的组件工厂。你有没有把它添加到@ NgModule.entryComponents?     在noComponentFactoryError(core.es5.js:3202)

ag-grid v13.1.2中是否不支持cellRendererFramework?还是有其他问题。

之前已经提出类似的问题,但没有找到任何有用的答案。请帮忙解决这个问题。提前谢谢。

5 个答案:

答案 0 :(得分:1)

我将组件添加到@NgModule的entryComponents中,正如错误消息所指向的那样。例如......

@NgModule({
imports: [
    CommonModule,
    SharedModule,
    ...
],
declarations: [
    ...
    myRendererComponent,
    ...
],
providers: [
    ...
],
entryComponents: [
    myRendererComponent
]

请参阅https://hassantariqblog.wordpress.com/2017/02/12/angular2-error-no-component-factory-found-did-you-add-it-to-ngmodule-entrycomponents/

答案 1 :(得分:1)

这就是我所做的。 (版本19.1.1)。

app.module.ts中,以AgGridModule.withComponents的格式导入您的渲染器

    @NgModule({
      declarations: [
        AppComponent
      ],
      imports: [
         ...
           AgGridModule.withComponents([
              ActionRendererComponent,
              YesnoRendererComponent, 
              StatusRendererComponent
          ])
      ],
      providers: [],
      bootstrap: [AppComponent]
    })
    export class AppModule { }

答案 2 :(得分:0)

可能有点迟了但我在遇到同样的问题时最终到了这里。 以下是我在网格选项中修复它的方法:

this.gridOptions = <GridOptions>{
  ...
  frameworkComponents: {
    "checkboxRenderer": CheckboxCellRendererComponent
  }
}

然后在列defs:

{
  field: "present",
  headerName: "User was present",
  cellRenderer: "checkboxRenderer"
}

答案 3 :(得分:0)

如果以上两个解决方案都不起作用,那么当您从服务器加载数据时,很可能是将string传递给ComponentFactoryResolver,但它应该是组件类型。

检查此网址:Stack overflow

答案 4 :(得分:0)

前面的答案中提到的事情结合在一起,我通过做几件事使它起作用。

在模块定义中,为declarationsentryComponents添加渲染器。

```

declarations: [ReportHyperlinkCellRenderer],
entryComponents: [ReportHyperlinkCellRenderer],

```

将您的GridOptions定义为

```

{
  frameworkComponents: {
    "hyperlinkRenderer": ReportHyperlinkCellRenderer
  }
}

```

此后,您的ColDef就可以简单地成为

```

{
  cellRenderer: "hyperlinkRenderer"
}

```