如何将按钮角色添加到 angular 中的自定义元素以使其可被屏幕 reader 访问?

How to add button role to a custom element in angular to make it accessible by screen reader?

我在 angular 中有一个处理图像的自定义组件。我将替代文本作为元素的输入,屏幕 reader 将其拾取并说出来。但是每当我切换到图像时,它都会显示 'Trash' 组。我希望屏幕 reader 将其读出为 'Trash' 按钮。我怎样才能做到这一点?以下是我目前的实现:

icn组件:

<img [ngClass]="class" [file]="file" [alt]="alt">

用法:

<icn class="del-icon" [file]="'trash'" [alt]="Trash"></icn>

我试过 role="button" 但没有成功。任何 help/guidance 表示赞赏。

我不知道 Angular 所以您可能需要深入研究如何构建它,但您的方法让事情变得困难。

改为将按钮设为 <button>。通过这种方式,您可以获得所有内置的本机辅助功能(例如,默认情况下可通过选项卡访问、接受焦点、具有 hoverfocus 状态等)并且您还将在屏幕阅读器中获得正确的通知。

然后将图标放在 <button> 中并适当设置样式。

<button> <!--add whatever directives angular requires here-->
   <img [ngClass]="class" [file]="file" [alt]="alt">
</button>

您还可以考虑为您的图标使用内联 SVG,因为它们提供样式选项并且可以根据用户偏好更改颜色。它也是一种较少的下载资源,因此有助于提高性能。

我通过对角色进行更多试验找到了解决这个问题的办法。

图片标签没有将role="button"作为属性。相反,角色需要分配给图像标签的父元素,即在我的例子中,组件 icn 如下所示:

<icn class="del-icon" role="button" [file]="'trash'" [alt]="Trash"></icn>

现在,屏幕 reader 软件显示为 'Trash button',并提供了有关如何与按钮交互的更多说明。而且,如果上述方法不起作用,只需将自定义组件封装在 span 标记中并将 role="button" 分配给 span 标记就可以了。

<span class="del-btn-container" role="button">
   <icn class="del-icon" [file]="'trash'" [alt]="Trash"></icn>
</span>

注:按钮作用examples