You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Nebular菜单栏item的url属性时如何避免页面重载

解决Nebular菜单点击触发页面刷新的问题

问题出在你使用了NbMenuItem的url属性——这个属性会触发原生浏览器跳转,直接刷新整个页面。要实现Angular单页应用的无刷新路由导航,换用Nebular支持的Angular路由配置方式即可:

最简单的解决方法:替换url为link属性

修改你的Menu.ts,把每个菜单项的url换成link,注意路径要和你的路由配置匹配(如果是根路由下的子路径,记得加斜杠):

import { NbMenuItem } from "@nebular/theme";

export const MENU_ITEMS: NbMenuItem[] = [
  {
    title: "Orders",
    icon: "email-outline",
    link: "/orders",
  },  
  {
    title: "Customers",
    icon: "person-outline",
    link: "/customers",
  },
];

进阶:自定义菜单模板(如需更灵活的路由配置)

如果需要带查询参数、路由参数等复杂路由场景,可以自定义菜单模板,手动绑定routerLink:

<nb-sidebar class="menu-sidebar" tag="menu-sidebar" responsive>
  <nb-menu [items]="menu">
    <ng-template nbMenuItemTemplate let-item>
      <a [routerLink]="item.link" routerLinkActive="active">{{ item.title }}</a>
    </ng-template>
  </nb-menu>
</nb-sidebar>

这种情况下,Menu.ts里依旧用link属性配置路由路径即可。

你的路由模块配置已经正确包含了orders和customers子路由,这部分不需要修改。

核心原因:Nebular的link属性是专门为Angular Router设计的,会触发单页应用的无刷新导航;而url属性是用于外部链接或需要原生跳转的场景,这就是点击后页面刷新的根源。

内容的提问来源于stack exchange,提问作者vijay s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 01:50:30