Angular,如何阻止键盘与父组件的交互

Ric*_*rdo 8 router keyboard-events router-outlet angular angular-router

环境

我的角应用程序中有一个很大的组件树,有多个路径出口,可以显示每个级别上的特定组件.最深层次是管理某些信息的模式.

问题

如果你可以看到它(父组件),我可以阻止通过鼠标从我的子组件到父组件事件的交互,但是当我使用键盘时,我能够导航到父组件并在我的所有父组件中选择选项零件

这个问题

我该如何防止这种行为?

fun*_*zer 9

Angular CDK提供了一个名为cdkTrapFocus的指令,它可以防止焦点移动到dom节点和它的子节点之外.他们在MatDialog中使用它,效果很好.

如果您不想切换到使用MatDialog,或者您需要在对话框之外的其他布局中使用它,您可能需要考虑使用cdkTrapFocus:https://github.com/angular/material2/blob/3aceb7361cc34ad987f7b1ca39339d3203248341 /src/cdk/a11y/focus-trap/focus-trap.ts#L340

它应该像导入和声明指令一样简单 <div cdkTrapFocus></div>