在某些情况下防止路线导航

时间:2017-07-18 12:45:12

标签: angular

在vanilla JS中,通过preventDefault()轻松阻止链接导航。然而,在Angular中,它似乎并不那么容易,我不确定什么是正确的解决方案。例如,我有一个顶级菜单,其中某些项目在某些情况下是下拉列表,应该在点击时打开,而在其他项目中应该表现为普通链接。我做了我以为我通常会做的事情:

toggleMenu(event: Event) {
    event.preventDefault();
    // Usual logic goes here
}

但这不会停止导航,我不知道如何阻止它。我可以通过在每个链接上创建一个服务来阻止它来使它变得更加复杂,但这肯定有点过分。有什么建议吗?

1 个答案:

答案 0 :(得分:3)

这是一个很好的问题,在RouterLink源代码中没有明确的意图,表明支持禁用点击处理程序。

如果将<a [routeLink]="condition ? '/my/route/address' : null">Link</a> 分配给路由器链接,它将路由到当前路由。这与不改变路线基本相同,但我不知道这是否仍会触发路线更改。

condition

null可以是模板变量,或者如果需要计算更复杂的东西,可以调用组件方法。关键是当您要禁用链接时产生 [dbo].[data_forwarder_audit_table] [table_name] [varchar](100) NULL, [row_id] [bigint] NULL, [operation] [varchar](1) NULL, [time_stamp] [datetime] NULL, [primary_key] [varchar](255) NULL

相关问题