Изменить поведение клавиши ввода в телефоне - Angular 5 - PullRequest
0 голосов
/ 09 декабря 2018

Я работаю с input s, но я не совсем уверен, как выполняется конфигурация навигации (полагаю, что это предопределенное поведение).

Я не в последнем input кнопка ввода переходит к следующему.Этот работает как я хочу.enter image description here

Тем не менее, когда я нахожусь на последнем input, когда я нажимаю ввод, он автоматически нажимает на следующий button.enter image description here

Это то, чего я пытаюсь избежать.Есть ли способ изменить это поведение?Просто чтобы закрыть клавиатуру или нажать на другую button?

Я пробовал с keyup.enter, и она работает псевдо.Он вызывает метод, но также нажимает следующий button

HTML

<input
          type="text"
          class="form-control"
          id="validationCustomSurname"
          placeholder="e.g. Lopez"
          required
          (keyup.enter)="onNavigate(1, 'forward')"
          [(ngModel)]="values.store.surname"
          name="surname"
        />

Этот метод должен работать на телефоне, поэтому я предполагаю, что keydown не вариант, так как $event.code не дает мне никакого кода в телефоне.

1 Ответ

0 голосов
/ 09 декабря 2018

Некоторое время назад я делаю директиву , чтобы увидеть стек стека , который вы применяете в div (или в форме) следующим образом:

<form [formGroup]="myForm" (submit)="submit(myForm)" enter-tab>
    Each input or button add a reference variable #nextTab like
    <input name="input1" formControlName="input1" #nextTab/>
    <button type="button" #nextTab/>
</form>

Директива использует ContentChildren для добавления keydown.Введите все компоненты, которые имеют #nextTab, чтобы перейти к следующему элементу управления

export class EnterTabDirective {
  @ContentChildren("nextTab") controls: QueryList<any>
  nextTab

  constructor(private renderer: Renderer2, private el: ElementRef) {
  }
  ngAfterViewInit(): void {
    this.controls.changes.subscribe(controls => {
      this.createKeydownEnter(controls);
    })
    if (this.controls.length) {
      this.createKeydownEnter(this.controls);
    }
  }
  private createKeydownEnter(querycontrols) {
    querycontrols.forEach(c => {
      this.renderer.listen(c.nativeElement, 'keydown.enter', (event) => {
        if (this.controls.last != c) {
          let controls = querycontrols.toArray();
          let index = controls.findIndex(d => d == c);
          if (index >= 0) {
            let nextControl = controls.find((n, i) => n && !n.nativeElement.attributes.disabled && i > index)
            if (nextControl) {
              nextControl.nativeElement.focus();
              event.preventDefault();
            }
          }
        }
      })
    })
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...