我已设置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]);
paramCount
和params
与上述其中一条路线匹配。这在Chrome,IE10,IE11,Edge和除IE9之外的所有其他浏览器中效果很好,我没有错误,没有任何反馈,页面也没有路由。当我在我的页面上的搜索框中按Enter键时,它正确构建paramCount
和params
并点击上面的导航线,但字面上没有任何反应。
我正在Win7上的实际IE 9浏览器中进行测试(有和没有兼容模式,似乎没有区别)。我正在使用当前最新的Angular2.0.0-beta15并且我可以找到所有推荐的垫片/填充物。我也回到了测试阶段11,但没有一个工作过。
如果我得到零反馈,我怎么能调试呢?
这是一个绝对最小的plnkr:http://plnkr.co/edit/VR7SQaokPZLdfAtfyagm?p=preview
答案 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中运行良好。不确定你是否会遇到同样的事情。