不能使用 onAngularGridCreated 发射器

Cannot use onAngularGridCreated emitter

我对 Angular Slickgrid 库有疑问, 要修改排序按钮功能,我需要使用 onAngularGridCreated 事件(我假设)return 我的网格实例。但是当我将以下行添加到我的 angular-slickgrid 元素时:

<angular-slickgrid gridId="{{this.gridData.id}}"
                   [columnDefinitions]="columnDefinitions"
                   [gridOptions]="gridOptions"
                   [dataset]="dataset"
                   (onAngularGridCreated)="angularGridReady($event.detail)"
>
</angular-slickgrid>

我收到这个错误:

Event onAngularGridCreated is not emitted by any applicable directives nor by angular-slickgrid element

即使在查看 Documentation 我也不知道如何让它工作。

这是我在应用程序模块中导入的 angular-slick 网格:

imports: [
    ...
    AngularSlickgridModule.forRoot({
      locales: localeFrench
    })
],

在就该问题交换了所有评论之后,问题出在 IDE(通常是 Visual Studio 代码)使用的 Angular 语言服务,并且在 [=14] 时抛出一些错误=] 已启用(请参阅 Angular-Compiler-Options)。说真的,我希望他们能用自定义事件解决这个问题,但据我所知,他们还没有,我们只能按照以下步骤绕过错误。

你有 3 种方法来处理这个问题

  1. 禁用strictTemplates(最简单但您不会看到所有其他潜在的有效错误)
// tsconfig.app.json
{
    "extends": "./tsconfig.json",
    "angularCompilerOptions": {
      "strictTemplates": false
    },
  }
  1. 仅使用 Event 作为参数类型,然后将 detail 属性 转换为 AngularGridInstance
<angular-slickgrid gridId="grid28"
    [columnDefinitions]="columnDefinitions"
    [gridOptions]="gridOptions"
    [dataset]="dataset"                    
    (onAngularGridCreated)="angularGridReady($event)">
</angular-slickgrid>
angularGridReady(event: Event) {
    this.angularGrid = (event as CustomEvent).detail as AngularGridInstance;
    this.gridObj = this.angularGrid.slickGrid;
}
  1. 在视图中使用 $any()
<angular-slickgrid gridId="grid28"
    [columnDefinitions]="columnDefinitions"
    [gridOptions]="gridOptions"
    [dataset]="dataset"                    
    (onAngularGridCreated)="angularGridReady($any($event).detail)">
</angular-slickgrid>

这个 Angular-Slickgrid Discussion 中的另一个用户也报告了这个问题,我也问了另一个与此问题相关的 SO 问题:

  • How to use Custom Event (not Event Emitter) without strictTemplates to complain about $event not being a Custom Event type?

就我个人而言,我 使用 strictTemplates,所以我从来没有遇到过这个问题,但如果你想保留这个问题,请选择选项 2 或 3