IE9中的Angular2没有路由?

时间:2016-04-20 17:08:17

标签: internet-explorer-9 angular2-routing

我已设置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并且我可以找到所有推荐的垫片/填充物。我也回到了测试阶段11,但没有一个工作过。

如果我得到零反馈,我怎么能调试呢?

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

1 个答案:

答案 0 :(得分:0)

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

这最终对我有用,似乎在你的plnkr中起作用。

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