【问题标题】:Angular2 in IE9 not routing?IE9中的Angular2没有路由?
【发布时间】:2016-04-20 17:08:17
【问题描述】:

我已将 Angular2 设置为在引导调用中使用老式的 HashLocationStrategy:

bootstrap(AppComponent,[
  ROUTER_PROVIDERS,
  API_PROVIDERS, Storage,
  provide(LocationStrategy, { useClass : HashLocationStrategy })
]);

我设置了以下路线:

  new Route({ path: '/', name: 'Home', component: HomeComponent }),
  new Route({ path: '/search/:term/:cat/:page/:sort/:size/:more', name: 'Search6', component: HomeComponent }),
  new Route({ path: '/search/:term/:cat/:page/:sort/:size', name: 'Search5', component: HomeComponent }),
  new Route({ path: '/search/:term/:cat/:page/:sort', name: 'Search4', component: HomeComponent }),
  new Route({ path: '/search/:term/:cat/:page', name: 'Search3', component: HomeComponent }),
  new Route({ path: '/search/:term/:cat', name: 'Search2', component: HomeComponent }),
  new Route({ path: '/search/:term', name: 'Search1', component: HomeComponent }),
  new Route({ path: '/details/:accountNumber', name: 'Details', component: DetailsComponent })

我知道如果我改用查询字符串参数,我的路由可能会更清晰,但我稍后会努力清理它。

我构造了我的参数,然后尝试使用这一行进行导航:

this.router.navigate(['Search' + paramCount, params]);

paramCountparams 与上述路径之一创建匹配。这在 Chrome、IE10、IE11、Edge 和除 IE9 之外的所有其他浏览器中都非常有效,在这些浏览器中我没有收到任何错误、没有任何类型的反馈并且页面无法路由。当我在页面上的搜索框中按 Enter 键时,它会正确构建 paramCountparams 并点击上面的导航行,但实际上什么也没发生。

我正在 Win7 上的实际 IE 9 浏览器中进行测试(有无兼容模式似乎没有区别)。我在当前最新的 Angular2.0.0-beta15 上,并且有我能找到的所有推荐的 shim/polyfill。我也回到了 beta 11,但都没有工作。

如果我得到零反馈,我该如何调试呢?

这是一个绝对最小的 plnkr:http://plnkr.co/edit/VR7SQaokPZLdfAtfyagm?p=preview

【问题讨论】:

标签: internet-explorer-9 angular2-routing


【解决方案1】:

尝试添加html5历史api
https://cdnjs.cloudflare.com/ajax/libs/html5-history-api/4.2.7/history.min.js
在您的 ie.js 垫片文件之前。

这就是最终对我有用的方法,并且似乎在您的 plnkr 中有效。

注意:从 beta10 开始,IE9 中的前进/后退按钮一直存在一些问题。他们在 beta9 的 IE9 中运行良好。不知道你是否会遇到同样的事情。

【讨论】:

    猜你喜欢
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 2016-03-09
    • 1970-01-01
    • 2016-10-25
    • 2016-09-12
    • 1970-01-01
    相关资源
    最近更新 更多