我有一个自定义叠加层(来自“ @ angular / cdk / overlay”的OverlayModule),当在Ag-Grid中为Angular编辑单元格时会打开。
用户可以专注于MatInput的叠加层。但是现在,焦点集中在网格单元流之外的输入上,因此,当用户单击“选项卡”时,默认行为将集中在地址栏上。
我可以通过以下方法防止这种行为。
fromEvent(this.tabOutInput.nativeElement, 'keydown')
.pipe(
takeUntil(this._destroy)
)
.subscribe((event: KeyboardEvent) => {
if(event.keyCode === TAB) {
event.preventDefault();
// TODO: figure out how to focus the next cell
}
});
但是如何使下一个单元格集中?我看了看文档,发现tabToNextCell
和navigateToNextCell
似乎是选项,但我不希望此单元格的用户必须配置绑定了这些方法的模板。
ICellEditorParams
是否可以通过GridApi导航到下一个单元格?
agInit(params: ICellEditorParams): void {}
请帮助!
答案 0 :(得分:1)
DOH!我发现了问题所在。有些元素劫持了标签索引。此页面上有多个网格,this.params.api
引用的是最后一个网格,而不是我正在使用的网格。我在当天早些时候尝试了this.params.api.tabToNextCell()
,但没有成功,它在另一个网格(页面的第一个输入)之间不规则地切换。我只需要弄清楚如何正确地传递上下文以使多个网格正常工作。
fromEvent(this.tabOutInput.nativeElement, 'keydown')
.pipe(
takeUntil(this._destroy)
)
.subscribe((event: KeyboardEvent) => {
if(event.keyCode === TAB) {
event.preventDefault();
this.params.api.tabToNextCell(); <-- this does work with 1 grid on the page
}
});