问题标签 [mat-input]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
27 浏览

angular - 单击matPrefix / matSuffix时如何防止matInput聚焦?

我正在尝试实现一个计数器表单字段。它有两个按钮;一个用于增加计数值,一个用于减少计数值。到目前为止,实施非常简单。

但是,例如,当我单击matSuffix增量按钮时,它matInput会自动获得焦点。这会触发键盘在移动浏览器上向上滑动,并在视口抖动时让用户感到沮丧。如何防止这种行为?

我尝试制作自定义指令以应用于按钮,但无济于事。我也尝试将 counter 实现为 custom MatFormFieldControl,但它有自己的问题,所以这种方法是行不通的。

我能找到的与我的担忧相关的唯一资源是这个GitHub 问题。根据它,我应该绑定$eventonDecrement()andonIncrement()方法,然后调用.stopPropagation()绑定的事件对象。有效!按下递增和递减按钮时不再显示键盘。

我对这种方法的唯一问题是,现在当值低于最小约束mat-error时,消息不会显示。所以 GitHub 讨论中提出的“解决方案”对于我的用例来说确实是一个破碎的可访问性问题。counterValidators.min

在不影响上述可访问性问题的情况下,如何防止matInput在按下/单击matPrefix和时获得焦点?matSuffixmat-form-field