我有:
<div aria-live="polite" id="signInIdError"
*ngIf="!signInId.valid && (signInId.touched || isSubmitted)"
class="inline-validation critical">
<p>{{ "FYPVERROR" | translate }}</p>
</div>
问题是,当错误在字段验证时动态显示时,错误会不停地读取而不只是一次。
如何使这项工作?我尝试过分配div role =&#39; region&#39;与aria-live =&#34;礼貌&#34;以及只是aria-live =&#34;礼貌&#34;它似乎没有起作用。
答案 0 :(得分:1)
我对原因有所了解,但还没有解决方案。
我怀疑Angular在每个验证周期中至少完成这三件事中的一件:
使aria-live区域可见,在DOM中添加新区域或更新其内容都会触发浏览器/ OS的辅助功能API,从而导致Jaws再次读取内容。如果没有这些事件发生,Jaws会突然变得疯狂并反复阅读内容,没有其他原因。
对于后者,你可以使用aria-relavant属性,但是Jaws不能很好地支持它。无论如何,知道ngIf的本质,Angular可能是第一个,你不能阻止Jaws读取新出现的实时区域(无论是在DOM中添加还是通过CSS显示使其可见),因为它将是反对活区域的基本原则。
您可以尝试隐藏属性或CSS显示属性,而不是使用ngIf,但根据我的推理,我怀疑它会更好用。
所以,接下来的问题是:
我还没有足够的Angular 2经验来回答这两个问题。如果我有任何新闻,我会更新这个答案。
答案 1 :(得分:1)
我有类似的问题。我尝试在不同的元素上实现aria-live
和ngIf
并为我工作。
以您的情况为准。以下代码可能有效
<div id="signInIdError" class="inline-validation critical"
*ngIf="Condition"> <p aria-live="polite"> Some Text </p>
</div>