angular - 在活动选项卡上运行回调的 ClrTabs 更改事件而不是显示内容
问题描述
我想使用该ClrTabs
组件来驱动与 iframe 的交互。我可以使用 js 来更改 iframe 中的当前视图,并且我希望能够选择几个不同的视图。我希望能够通过单击它们对应的ClrTab
. 但是我找不到一种方法来处理事件以运行调用 iframe 的回调。我如何能够使用 VMWare Clarity 做到这一点ClrTabs
?
<clr-tabs>
<clr-tab *ngFor="let tab of tabs">
<button clrTabLink>{{tab.text}}</button>
</clr-tab>
</clr-tabs>
解决方案
我强烈建议不要对 Clarity 的选项卡使用完整的 Angular 组件,而只使用 Clarity 对选项卡支持的静态 DOM:
<ul class="nav" role="tablist">
<li role="presentation" class="nav-item">
<button class="btn btn-link nav-link active" aria-selected="true">First tab</button>
</li>
<li role="presentation" class="nav-item">
<button class="btn btn-link nav-link">Second tab</button>
</li>
<li role="presentation" class="nav-item">
<button class="btn btn-link nav-link">Third tab</button>
</li>
</ul>
<section role="tabpanel">
<iframe></iframe>
</section>
一旦你在你的模板中加入了这个,你就可以轻松地将点击监听器添加到这些按钮并触发 iframe 所需的任何内容。
我看到您在 iframe 之外设置选项卡的模式的问题是您无法使其可访问。标签永远不会链接到 iframe 的内容,因此屏幕阅读器将永远无法描述标签激活的内容。由于 Clarity 选项卡的核心是可访问性,因此每个选项卡都需要一个面板,因此我们可以通过 ARIA 属性(如aria-controls
和)链接它们aria-labelledby
。您只有一个面板这一事实意味着您无法使用 Clarity 的 Angular 组件。
推荐阅读
- http - wsarecv:现有连接被远程主机强行关闭
- scala - 如何用akka创建tcp服务器?
- javascript - 相同的字符串在 Jest 中不匹配
- reactjs - npm install 覆盖现有的 package-lock.json 并破坏 Modal
- mnist - TypeError:传递给参数“输入”的值的 DataType int64 不在允许值列表中:float16、bfloat16、float32、float64
- r - 根据其他列的 if-else 评估在 data.frame 中创建新列
- c# - 连接字符串中的 MultipleActiveResultSets 是什么?
- python - 是否有一个 sympy 函数来提取负幂单项式的系数?
- php - Symfony 4 - .env 变量不可用
- node.js - Express.js 在单独的文件中设置每个路由