不能使用 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 种方法来处理这个问题
- 禁用
strictTemplates
(最简单但您不会看到所有其他潜在的有效错误)
// tsconfig.app.json
{
"extends": "./tsconfig.json",
"angularCompilerOptions": {
"strictTemplates": false
},
}
- 仅使用
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;
}
- 在视图中使用
$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
我对 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 种方法来处理这个问题
- 禁用
strictTemplates
(最简单但您不会看到所有其他潜在的有效错误)
// tsconfig.app.json
{
"extends": "./tsconfig.json",
"angularCompilerOptions": {
"strictTemplates": false
},
}
- 仅使用
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;
}
- 在视图中使用
$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