我正在开发一个缩略图组件,需要公布每个缩略图的内容。这里有两个选项 1) 使用 [attr.aria-live]="polite" 或使用 angular material a11y 模块。不确定是否有更好的性能和支持更多的浏览器。
基本上,选择缩略图时,请宣布其内容。
解决方案1:
<thumbnail aria-live="polite" aria-atomic="true" [attr.aria-label]="selectObservable$ | async === currentThumbnailId ? currentThumbnailId : ''"></thumbnail>
解决方案2:
// template
<thumbnail></thumbnail>
// component.ts
@component
class ThumbnailComponent({
constructor(liveAnnouncer: LiveAnnouncer){
selectObservable$.pipe(
filter(selectId => selectId === currentThumbnailId)
).subscribe( currentThumbnailId =>
this.liveAnnouncer.announce(currentThumbnailId);
)
}
})