如何使 mat-dialog 中的按钮也可以在 Enter 上工作?
How to make button in mat-dialog work on Enter also?
我有一个 mat-dialog-box
单击事件它会关闭对话框,但我希望它在 Enter 按下时也能正常工作。有什么办法吗?
我试过使用表格但没有用。以下是我尝试使用的解决方案:
HTML
<form (submit)="doAction()">
<button type="submit">Add</button>
</form>
TS
doAction() {
this.dialogRef.close({ event: this.action, data: this.local_data });
}
但是 Enter 事件没有发生,尽管点击它正在提交数据。如果我采用上述 HTML 方法,也适用于 Enter 正常形式(不在对话框中)。
任何人都可以提出这个问题吗?
在你的对话框组件中添加一个 HostListener,像这样(一个完整但简单的组件):
一个完整的工作示例here。
HTML
<p>
my-dialog works!
</p>
<form (submit)="close()">
<input type="text">
<button type="submit">Add</button>
</form>
<button mat-button (click)="close()">Close</button>
TS
import { Component, HostListener, OnInit } from '@angular/core';
import { MatDialogRef } from '@angular/material/dialog';
@Component({
selector: 'app-my-dialog',
templateUrl: './my-dialog.component.html',
styleUrls: ['./my-dialog.component.css']
})
export class MyDialogComponent implements OnInit {
constructor(private dialogRef: MatDialogRef<MyDialogComponent>) { }
@HostListener('window:keyup.Enter', ['$event'])
onDialogClick(event: KeyboardEvent): void {
this.close();
}
}
ngOnInit() {
}
close(): void {
this.dialogRef.close(true);
}
}
无论您希望在单击 'Enter' 按钮时调用该函数,只需将此事件与(单击)事件一起添加即可
(keypress.enter)="yourFunction($event)"
这非常有效。
按钮工作的实际键盘事件是通过单击空格键。
如果你的需求肯定是回车键,那就加
(keypress.enter)="yourFunction($event)"
否则只需添加
(keypress)="yourFunction($event)"
按键事件适用于 keyUp 和 keyDown 事件。仅供参考
我有一个 mat-dialog-box
单击事件它会关闭对话框,但我希望它在 Enter 按下时也能正常工作。有什么办法吗?
我试过使用表格但没有用。以下是我尝试使用的解决方案:
HTML
<form (submit)="doAction()">
<button type="submit">Add</button>
</form>
TS
doAction() {
this.dialogRef.close({ event: this.action, data: this.local_data });
}
但是 Enter 事件没有发生,尽管点击它正在提交数据。如果我采用上述 HTML 方法,也适用于 Enter 正常形式(不在对话框中)。
任何人都可以提出这个问题吗?
在你的对话框组件中添加一个 HostListener,像这样(一个完整但简单的组件):
一个完整的工作示例here。
HTML
<p>
my-dialog works!
</p>
<form (submit)="close()">
<input type="text">
<button type="submit">Add</button>
</form>
<button mat-button (click)="close()">Close</button>
TS
import { Component, HostListener, OnInit } from '@angular/core';
import { MatDialogRef } from '@angular/material/dialog';
@Component({
selector: 'app-my-dialog',
templateUrl: './my-dialog.component.html',
styleUrls: ['./my-dialog.component.css']
})
export class MyDialogComponent implements OnInit {
constructor(private dialogRef: MatDialogRef<MyDialogComponent>) { }
@HostListener('window:keyup.Enter', ['$event'])
onDialogClick(event: KeyboardEvent): void {
this.close();
}
}
ngOnInit() {
}
close(): void {
this.dialogRef.close(true);
}
}
无论您希望在单击 'Enter' 按钮时调用该函数,只需将此事件与(单击)事件一起添加即可
(keypress.enter)="yourFunction($event)"
这非常有效。
按钮工作的实际键盘事件是通过单击空格键。
如果你的需求肯定是回车键,那就加
(keypress.enter)="yourFunction($event)"
否则只需添加
(keypress)="yourFunction($event)"
按键事件适用于 keyUp 和 keyDown 事件。仅供参考