我想在一个mat-card组件中添加一个routerlink,使卡可以点击。我的组件是这样的:
<mat-card class="card" >
<mat-card-content>
<mat-card-title> {{title}}</mat-card-title>
<mat-card-subtitle> {{subtitle}} </mat-card-subtitle>
</mat-card-content>
</mat-card>
如何做到这一点?
- 谢谢-谢谢
5条答案
按热度按时间dba5bblo1#
只需使用
routerLink
mwngjboj2#
然后它应该处理点击
vktxenjb3#
如果在导航之前需要进行任何操作,最佳做法是使用单击方法处理任何操作并进行导航:
HTML
T
ix0qys7i4#
如果你有动态路由,你可以像下面这样使用
[routerLink]
指令:我们使用事件绑定来达到
title
。您也可以将动态值与静态值混合。例如,如果我们的组件中有一个名为
team
的变量,其属性为id
,我们可以定义如下路径:[routerLink]="['/teams', 'edit', team?.id]"
在这个例子中,数组
'/teams'
和'edit'
的第一个和第二个值是静态的,team?.id
是动态的,我们通过事件绑定来实现。它可以在浏览器中翻译如下:
/teams/edit/3
mrzz3bfm5#
请不要忘记可访问性。你基本上是把卡变成了一个按钮。所以你需要告诉辅助设备它是一个按钮。看看ARIA Authoring Practices Guide button examples
您还需要添加默认的按钮事件绑定(单击、空格键、回车键)。如果您使用的是路由器,您可能需要遵循Karnan Muthukumar的建议,在TypeScript中而不是HTML中处理路由器导航,以便拥有必要的事件绑定。
**注意:**如果您不考虑默认的空格键行为,空格键事件绑定可能会导致窗口滚动。使用keydown.space而不是keyup.space有助于在默认行为发生之前阻止它。您可以在HTML中使用preventDefault(),或者将$事件传递给您的方法并在方法中使用preventDefault()。
.is-focusable类别会加入指标游标和焦点可见的虚拟类别,以提供自订焦点状态样式。
当然,只要不删除所有的焦点样式(默认或自定义),并且不让键盘用户知道卡何时被聚焦,您就可以按自己喜欢的方式处理样式。