如何在ngMaterial中禁用ngAria?

时间:2015-06-05 12:36:13

标签: wai-aria angular-material

ngAria(一个辅助功能模块)正在为我的Angular Material项目添加一个不必要的bower导入 - 现在它正在抛出警告:

  

属性"节点

上缺少可访问性所需的aria-label"

我只添加了ngAria,因为它似乎是ngMaterial所必需的。我的应用程序不需要屏幕阅读器可访问性。

无论如何,如何从ngMaterial中删除ngAria?或者至少禁用所有警告。

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

5 个答案:

答案 0 :(得分:18)

从1.1.0起可以全局禁用消息:

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

(但请注意其他答案中关于咏叹调标签对可访问性非常重要的讨论!)

答案 1 :(得分:8)

我认为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

答案 2 :(得分:7)

据我所知,

ngAria不能禁用,不应禁用它是角度材料的核心部分。
enter image description here
要停用警告,您可以将aria-label="..."添加到特定的以下项目

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

我想,我已经涵盖了所有这些,但可能还有其他的注意!


答案 3 :(得分:6)

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

<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>
  

咏叹调标签=&#34; WriteHereAnyLabelYouLike&#34;

答案 4 :(得分:2)

如果你真的想要禁用它,你可以简单地覆盖或角度调用它decorating位于角度材质库内的原始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替换这些方法(无操作)。