【问题标题】:cellRendererFramework no component factory found ag-grid angular2cellRendererFramework 找不到组件工厂 ag-grid angular2
【发布时间】:2018-03-10 00:41:47
【问题描述】:

尝试将 cellRendererFramework(v13.1.2) 与 angular2 一起使用,但出现此错误:

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

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

之前有人问过类似的问题,但没有找到任何有用的答案。请帮助解决这个问题。提前致谢。

【问题讨论】:

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


【解决方案1】:

可能有点晚了,但我遇到了同样的问题。 这是我在网格选项中修复它的方法:

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

然后在 defs 列中:

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

【讨论】:

    【解决方案2】:

    我将该组件添加到@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/

    【讨论】:

      【解决方案3】:

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

      查看此网址:Stack overflow

      【讨论】:

        【解决方案4】:

        前面的答案中提到了几件事,我通过做几件事让它工作。

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

        ```

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

        ```

        将您的GridOptions 定义为

        ```

        {
          frameworkComponents: {
            "hyperlinkRenderer": ReportHyperlinkCellRenderer
          }
        }
        

        ```

        之后,你的ColDef 就可以这么简单了

        ```

        {
          cellRenderer: "hyperlinkRenderer"
        }
        

        ```

        【讨论】:

          【解决方案5】:

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

          app.module.ts 中,使用AgGridModule.withComponents 将您的渲染器导入为

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

          【讨论】:

            猜你喜欢
            • 2019-10-15
            • 2020-04-04
            • 1970-01-01
            • 2017-03-06
            • 2016-11-15
            • 2020-07-12
            • 2020-08-24
            • 2017-01-15
            • 2018-10-12
            相关资源
            最近更新 更多