24

ngAria(一个可访问性模块)正在向我的 Angular Material 项目添加一个不必要的凉亭导入 - 现在它正在抛出警告:

节点上缺少可访问性所需的属性“ aria-label ”

我只添加了 ngAria,因为它似乎对 ngMaterial 是必需的。我的应用不需要屏幕阅读器辅助功能。

无论如何,我怎样才能从 ngMaterial 中删除 ngAria?或至少禁用所有警告。

编辑: 似乎禁用 ngAria 警告的唯一简单方法就是console.warn = function() {};关闭浏览器的警告(我不建议这样做,因为它可能隐藏与 aria 无关的警告)

4

5 回答 5

23

从 1.1.0 开始可以全局禁用消息:

app.config(function($mdAriaProvider) {
   // Globally disables all ARIA warnings.
   $mdAriaProvider.disableWarnings();
});

(但请注意其他答案中关于 aria 标签对可访问性很重要的讨论!)

于 2016-09-08T22:01:54.907 回答
8

据我所知,ngAria 不能被禁用,也不应该被禁用,它是 angular-material 的核心部分。
在此处输入图像描述
要禁用警告,您可以添加aria-label="..."到以下特定项目

  • 输入
  • md按钮
  • md 对话框
  • md图标
  • md-复选框
  • md 单选按钮
  • md-滑块
  • md 开关

我想,我已经涵盖了所有这些,但可能还有其他的,所以要小心!


于 2015-06-06T10:46:15.467 回答
7

我认为 Salal Aslam 的答案更好,但是如果您想暂时禁用 Aria 警告,您可以console.warn对原始问题中建议的覆盖进行调整。可能是这样的:

console.realWarn = console.warn;
console.warn = function (message) {
    if (message.indexOf("ARIA") == -1) {
        console.realWarn.apply(console, arguments);
    }
};

编辑:对于复杂的情况,可能需要更精细的解决方案。查看Shaun Scovil的 Angular Quiet Console

于 2015-08-11T15:02:47.677 回答
7

只需aria-label="WriteHereAnyLabelYouLike"在 md-checkbox 上添加另一个标签,它就会解决问题。

<md-checkbox type="checkbox" ng-model="account.accountant" class="md-primary" layout-align="end" ng-true-value="1" ng-false-value="0" aria-label="ShowHideAccountant" ></md-checkbox>

aria-label="WriteHereAnyLabelYouLike"

于 2016-01-07T12:17:16.613 回答
2

如果您真的想禁用它,您可以通过简单地覆盖或 Angular 将其称为decorating位于 angular-material 库中的原始 mdAria 服务。

angular.module('appname').decorator('$mdAria', function mdAriaDecorator($delegate) {
    $delegate.expect = angular.noop;
    $delegate.expectAsync = angular.noop;
    $delegate.expectWithText = angular.noop;
    return $delegate;
});

这适用于角材料v1.0.6,但您可能必须检查是否已清除所有方法。

基本上,以上所有内容都是替换暴露给 $mdAria 服务的公共方法,它将用noop(无操作)替换这些方法。

于 2016-04-27T03:11:09.927 回答