如何从AgEditorComponent的上下文中将焦点放在ag-grid Angular中的下一个单元格

时间:2019-05-21 00:30:10

标签: javascript angular rxjs ag-grid

我有一个自定义叠加层(来自“ @ 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
        }
      });

但是如何使下一个单元格集中?我看了看文档,发现tabToNextCellnavigateToNextCell似乎是选项,但我不希望此单元格的用户必须配置绑定了这些方法的模板。

ICellEditorParams是否可以通过GridApi导航到下一个单元格?

agInit(params: ICellEditorParams): void {}

请帮助!

1 个答案:

答案 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
        }
      });