如何防止Angular中的Tab事件?

时间:2019-04-17 16:46:43

标签: html angular events

我想使用Tab键执行一些逻辑,但实际上并未更改焦点。根据{{​​3}},我可以在标记中使用 false 或在方法中使用 preventDefault()。我俩都是这样。

onKey(event: KeyboardEvent) { 
  event.preventDefault();
  if(event.key = "Tab") { this.update.emit(this.config); }
}

<input #input
   title="{{config|json}}"
   value="{{config.value}}"
   (keyup)="onKey($event)"
   (keydown.Tab)="onKey($event);false;">

不过,当我按Tab键时,它会额外跳动。当我尝试完全相同的逻辑但基于其他键(例如“ a ”或“ enter ”)时,其行为符合预期,因此我得出的逻辑是正确。出于某种原因,“按制表符”是不守规矩的,并且像我想按两次制表键一样传播事件。

我不正确地使用Tab键吗?除了我已经拥有的东西以外,不确定要用Google做什么。

2 个答案:

答案 0 :(得分:1)

从堆栈闪电中提取:https://stackblitz.com/edit/angular-gbuwma?embed=1&file=src/app/app.component.ts

ts

import { Component, ViewChild, ElementRef,ChangeDetectorRef } from '@angular/core';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {

  constructor(private changeDetector: ChangeDetectorRef) { }


  @ViewChild("input2") input2: ElementRef;

  onKey(event: KeyboardEvent) {
    event.preventDefault();
    if (event.key === "Tab") {
        console.log('ole... tab');
        this.input2.nativeElement.value = "aha";
        this.changeDetector.detectChanges();
        this.input2.nativeElement.focus();
    }

  }

}

html

<input #input
   title=""
   value=""
   (keydown.Tab)="onKey($event);false;">
 - - - 
   <input #input2
   title=""
   value=""
   (keydown.Tab)="onKey($event);false;">

答案 1 :(得分:0)

尝试使用此代码:

# Add SVG Mime Types
AddType image/svg+xml svg
AddType image/svg+xml svgz