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

Angular 7路由与导航在IE 11中无法正常工作

解决Angular路由在IE11中失效的问题

结合你提供的代码和问题描述,这个问题主要是IE11对Angular的兼容性支持不足,加上HTML结构的兼容性问题导致的,咱们一步步来修复:

1. 完善IE11所需的Polyfills配置

Angular新版本(9+)默认不会自动启用IE11支持,需要手动配置polyfills来填补IE11缺失的ES6+特性:

  • 首先安装必要的依赖包:
    npm install --save classlist.js web-animations-js
    
  • 打开src/polyfills.ts,取消以下相关注释并补充必要的polyfill导入:
    // 针对IE11的核心ES5/ES6兼容
    import 'core-js/es/es5';
    import 'core-js/es/es6';
    import 'core-js/es/array';
    import 'core-js/es/object';
    
    // 支持NgClass在SVG元素上的使用(IE10/11需要)
    import 'classlist.js';  
    
    // 支持Web Animations(Angular Material动画需要,IE11不原生支持)
    import 'web-animations-js';  
    

2. 确保TypeScript编译目标为ES5

IE11仅支持ES5语法,所以要修改tsconfig.json的编译目标:

{
  "compilerOptions": {
    "target": "es5",
    // 其他配置保持不变
  }
}

3. 修复HTML中按钮嵌套链接的兼容性问题

IE11对<button>内部嵌套<a>标签的点击事件处理存在bug,点击链接时可能不会触发路由跳转。你可以二选一修改:

去掉内部的<a>标签,把路由指令直接应用在按钮上:

<nav>
  <button mat-raised-button class="mat-button" routerLink="/india" routerLinkActive="active">
    India's Dashboard
  </button>
  <button mat-raised-button class="mat-button" routerLink="/state" routerLinkActive="active">
    Indian-State's Dashboard
  </button>
  <button mat-button class="mat-button" routerLink="/world" routerLinkActive="active">
    World's Dashboard
  </button>
</nav>

方案B:将链接样式改为按钮样式

如果更倾向于使用<a>标签,直接给链接应用Angular Material的按钮类:

<nav>
  <a mat-raised-button class="mat-button" routerLink="/india" routerLinkActive="active">
    India's Dashboard
  </a>
  <a mat-raised-button class="mat-button" routerLink="/state" routerLinkActive="active">
    Indian-State's Dashboard
  </a>
  <a mat-button class="mat-button" routerLink="/world" routerLinkActive="active">
    World's Dashboard
  </a>
</nav>

4. (可选)改用Hash路由策略

如果上述配置后仍有问题,可能是IE11对HTML5 History API的支持不完善,此时可以切换到Hash路由:
修改app.module.ts中的路由配置:

@NgModule({
  imports: [RouterModule.forRoot(routes, { useHash: true })],
  exports: [RouterModule]
})

这样路由URL会变成/#/india的形式,IE11可以正常识别和跳转。

按照以上步骤配置后,你的Angular路由应该就能在IE11中正常工作了。

内容的提问来源于stack exchange,提问作者Abhinav Srivastava

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 08:42:39