【问题标题】:How to bind dynamic data to aria-label?如何将动态数据绑定到 aria-label?
【发布时间】:2017-07-28 06:44:48
【问题描述】:

我有动态文本绑定到 HTML 页面上的aria-label。 这是一个 Angular 2 应用程序。我正在使用这样的东西:

aria-label="Product details for {{productDetails?.ProductName}}"

但我得到一个错误:

无法绑定到“aria-label”,因为它不是“div”的已知属性。

有什么解决方法吗?

【问题讨论】:

    标签: html angular wai-aria uiaccessibility


    【解决方案1】:

    只需在 aria-label 之前使用attr.

    attr.aria-label="Product details for {{productDetails?.ProductName}}"

    [attr.aria-label]="'Product details for ' + productDetails?.ProductName"

    此处的示例:https://stackblitz.com/edit/angular-aria-label?embed=1&file=src/app/app.component.html&hideExplorer=1

    附言。正如@Simon_Weaver 提到的,有一些组件实现了自己的aria-label @Input,例如mat-select

    在这里查看他的答案Angular Material mat-label accessibility

    【讨论】:

    • 应该是[attr.aria-label]="productDetails?.ProductName"
    • @LucaDeNardi,实际上,您的方式可读性较差,您忘记添加静态字符串部分Product details for...。我已经为任何想要最适合他们情况的人添加了您建议的选择器。
    • @BrunoJoão 抱歉,我的意思是你不应该同时使用 [attr.aria-label]{{productDetails}},因为方括号已经解析了变量。你要么写你的属性不带方括号大括号,你的属性带方括号不带大括号。
    • @LucaDeNardi 感谢您让我知道。我已经删除了括号。
    • @BrunoJoão 理想的方法是使用方括号。
    【解决方案2】:

    您应该在目标属性周围使用方括号 ([ ]):

    [attr.aria-label]="'Product details for' + productDetails?.ProductName"
    

    【讨论】:

      【解决方案3】:

      如果 productDetails 中的 ProductName 为 null 或未定义为,也可以进一步检查

      [attr.aria-label]="(typeof productDetails.ProductName !== 'undefined') ? 
      'Product details for ' + productDetails.ProductName : '' "
      

      以便 JAWS/NVDA/Narrator 能够读取它的值是否存在..

      【讨论】:

        【解决方案4】:

        这对我有用 没有[]

        attr.aria-labelledby="navbarDropdownMenuLink{{ i }}"

        【讨论】:

          猜你喜欢
          • 2016-12-15
          • 1970-01-01
          • 2019-02-22
          • 1970-01-01
          • 2021-06-19
          • 1970-01-01
          • 1970-01-01
          • 2014-05-13
          • 2021-09-25
          相关资源
          最近更新 更多