Angular 2 条路由在从 Bootstrap 3.3.7 升级到 4.0.0-alpha.6 后导致新页面加载

Angular 2 routes cause new page load after upgrading from Bootstrap 3.3.7 to 4.0.0-alpha.6

我一直在使用 this blog post 中提到的 Angular 2/ASP.NET 核心 SPA 模板。使用 dotnet new angular 时,使用这些技术和 Bootstrap 3.3.7 生成了一个 Visual studio 2017 项目。我更新了 package.json 以使用 Bootstrap 4.0.0-alpha.6,安装了新的软件包,然后重新 运行 webpack --config webpack.config.vendor.js 生成了一个新的 CSS 包和 JS.

但是,在应用程序中切换路由时,我注意到 Chrome 开发者工具网络选项卡中的路由现在会执行完整的页面刷新,而不是在路由器出口中输出新内容。

Bootstrap 附带 JS 文件以允许 Bootstrap 插件工作,并且在默认模板输出的情况下,用于小屏幕上的折叠导航 bar/hamburger 菜单.我想也许较新的 Bootstrap JS 可能会干扰所以我删除了 webpack.config.vendor.js 中的 bootstrap 条目并留在 bootstrap/dist/css/bootstrap.css 的条目中,这意味着只有 CSS 是现在捆绑而不是其关联的 JS。我重新 运行 webpack 并确认它不再与供应商 JS 的其余部分捆绑在一起。但是,当 运行 应用程序时,路由仍然以同样不正确的方式运行。

如果我们查看 运行 应用 在升级 Bootstrap 之前生成的 HTML,路由如下所示:

<a _ngcontent-ec6b-1="" ng-reflect-router-link="/home" ng-reflect-href="/home" href="/home">Home</a>

但是升级 CSS 结果是:

<a _ngcontent-1="" href="/home">Home</a>

注意后面代码中缺少的属性;我在最新的 Chrome 和 Edge 浏览器中确认了这一点,我在 VS2017 中从 IIS Express 运行 以及 dotnet run 确认了这一点。任何想法为什么简单地更新捆绑的 Bootstrap CSS 会改变 Angular 2 条路线的 HTML 输出?

我能够通过为 Tether. Follow 添加缺少的 Bootstrap 依赖项来解决此问题。