我创建了一个名为Angular-Slickgrid的 Angular 库,它是SlickGrid的包装器,它是一个旧的 JavaScript/jQuery 库,我可以使用 SlickGrid 发送的任何自定义事件而没有任何问题,如下所示(此时一切都很好)
<angular-slickgrid gridId="grid28"
[columnDefinitions]="columnDefinitions"
[gridOptions]="gridOptions"
[dataset]="dataset"
(onSelectedRowsChanged)="handleOnSelectedRowsChanged($event.detail.eventData, $event.detail.args)">
</angular-slickgrid>
Run Code Online (Sandbox Code Playgroud)
一切都很好,一切正常
handleOnSelectedRowsChanged(event: any, args: OnSelectedRowsChangedEventArgs) {
console.log(args);
}
Run Code Online (Sandbox Code Playgroud)
在我的库中,我只是用一个具有以下代码的小函数来调度这些事件
/** Dispatch of Custom Event, which by default will bubble & is cancelable */
dispatchCustomEvent(eventName: string, data?: any, isBubbling: boolean = true, isCancelable: boolean = true) {
const eventInit: CustomEventInit = { bubbles: isBubbling, cancelable: isCancelable };
if (data) {
eventInit.detail = data;
}
return this.elm.nativeElement.dispatchEvent(new CustomEvent(eventName, eventInit));
}
Run Code Online (Sandbox Code Playgroud)
一切都是美好的,生活是美好的……
strictTemplates …我对 angular 很陌生,我无法弄清楚如何在不导航到它的情况下以编程方式生成路由链接。
我正在使用 angular-slickgrid 并且我在一些需要生成一些 HTML 来呈现单元格的列上有一个自定义格式化程序,我想在那里有一个单独组件的链接:
const formatZoneCell: Formatter = (row: number, cell: number, value: any, columnDef: Column, dataContext: any, grid?: any) =>
{
if (value === undefined) { return (""); }
var zone = 0;
return (`<span>${value} - <a ?>details</a></span>`);
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一些东西在哪里?是,就像 '[routerLink]="[...]"' 但显然它没有得到评估。该函数中有没有办法在返回之前生成链接,还是必须对其进行硬编码?
我知道一个解决方案是有一个 onclick 事件并调用一个函数,然后该函数将执行 router.navigate 调用,但我没有走这条路,因为我认为这会生成用户在悬停时看不到的链接。
额外的问题,如果有人知道使用 angular-slickgrid 为每个单元格定义上下文菜单的方法,我将不胜感激。看起来有一些上下文菜单选项,但似乎没有一个很好的方法可以知道单击了哪个单元格,这就是为什么我试图通过格式化程序在单元格本身中添加链接,但这不是很漂亮。
我希望能够向该右键单击菜单添加一个条目“详细信息”,该菜单将链接到我的其他页面,并根据右键单击哪个单元格使用适当的参数。