Как сфокусировать следующую ячейку в ag-grid Angular из контекста AgEditorComponent - PullRequest
1 голос
/ 21 мая 2019

У меня есть пользовательское наложение (OverlayModule из '@ angular / cdk / overlay'), которое открывается при редактировании ячейки в 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 {}

Пожалуйста, помогите!

1 Ответ

1 голос
/ 21 мая 2019

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
        }
      });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...