Angular Material 带输入的扩展面板 Header
Angular Material Expansion Panel Header with Input
我有一个使用 Angular Material 组件的 angular 12 应用程序。我有一个扩展面板,在 header 中有一个输入。
<mat-expansion-panel class="mt-2 mat-elevation-z4" *ngFor="let segmentGroup of segmentGroups">
<mat-expansion-panel-header>
<mat-form-field appearance="outline" class="w-25 tableInput">
<input matInput [(ngModel)]="segmentGroup.name" (change)="segmentGroup.isDirty = true" (click)="$event.stopPropagation();">
</mat-form-field>
<button mat-icon-button *ngIf="segmentGroup.isDirty" (click)="Save()">
<mat-icon>save</mat-icon>
</button>
</mat-expansion-panel-header>
我希望顶部能够编辑 Header 内的值。最初的问题是当您单击输入时,它会展开和折叠扩展面板。 onclick 停止传播修复了该问题。但是,当前的问题是您无法使用 space 栏输入 space。 spacebar 使扩展面板展开和折叠。我怎样才能防止这种行为并在输入中允许 spaces。
您可以通过获取空格键 keydown-event
然后使用 event.stopPropagation()
阻止它折叠 mat-expansion
:
来停止空格键事件传播
<mat-form-field appearance="outline" class="w-25 tableInput">
<input matInput [(ngModel)]="name" (click)="$event.stopPropagation();" (keydown)="handleSpacebar($event)">
</mat-form-field>
handleSpacebar(event) {
if (event.keyCode === 32) {
event.stopPropagation();
}
}
或者如果您只做模板解决方案,那么您可以通过绑定到 keyDown 事件直接在模板中完成。
<mat-form-field appearance="outline" class="w-25 tableInput">
<input matInput [(ngModel)]="name"
(click)="$event.stopPropagation()"
(keydown.Space)="$event.stopImmediatePropagation()"
>
</mat-form-field>
我有一个使用 Angular Material 组件的 angular 12 应用程序。我有一个扩展面板,在 header 中有一个输入。
<mat-expansion-panel class="mt-2 mat-elevation-z4" *ngFor="let segmentGroup of segmentGroups">
<mat-expansion-panel-header>
<mat-form-field appearance="outline" class="w-25 tableInput">
<input matInput [(ngModel)]="segmentGroup.name" (change)="segmentGroup.isDirty = true" (click)="$event.stopPropagation();">
</mat-form-field>
<button mat-icon-button *ngIf="segmentGroup.isDirty" (click)="Save()">
<mat-icon>save</mat-icon>
</button>
</mat-expansion-panel-header>
我希望顶部能够编辑 Header 内的值。最初的问题是当您单击输入时,它会展开和折叠扩展面板。 onclick 停止传播修复了该问题。但是,当前的问题是您无法使用 space 栏输入 space。 spacebar 使扩展面板展开和折叠。我怎样才能防止这种行为并在输入中允许 spaces。
您可以通过获取空格键 keydown-event
然后使用 event.stopPropagation()
阻止它折叠 mat-expansion
:
<mat-form-field appearance="outline" class="w-25 tableInput">
<input matInput [(ngModel)]="name" (click)="$event.stopPropagation();" (keydown)="handleSpacebar($event)">
</mat-form-field>
handleSpacebar(event) {
if (event.keyCode === 32) {
event.stopPropagation();
}
}
或者如果您只做模板解决方案,那么您可以通过绑定到 keyDown 事件直接在模板中完成。
<mat-form-field appearance="outline" class="w-25 tableInput">
<input matInput [(ngModel)]="name"
(click)="$event.stopPropagation()"
(keydown.Space)="$event.stopImmediatePropagation()"
>
</mat-form-field>