IE9 PathLocationStrategy Angular 4

时间:2017-08-25 12:28:27

标签: angular angular2-routing

我在Angular4中使用IE9和PathLocationStrategy,但它似乎并没有起作用。它只是附加了#34;#"无限的时间。我尝试添加history.js polyfill,但似乎没有任何工作。

任何人都可以帮助我如何在Angular 4和IE9中使用PathLocationStrategy?

更新 我终于想通了,我们不能在IE9上使用PathLocationStrategy。现在我试图找出如何在浏览器的其余部分使用PathLocationStrategy,并且只有IE9存在时才切换到HashLocationStrategy。 我试图在我的模块中包含以下代码行:

RouterModule.forRoot(COMMON_ROUTES, { useHash: !Boolean(history.pushState) }),

我验证了,!Boolean(history.pushState)在IE9中返回true,在其余浏览器中返回false。但它没有用。即使在IE9中,Angular默认为PathLocationStrategy。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

原因

  

较旧的浏览器[非常青树]在位置URL发生变化时向服务器发送页面请求,除非在“#”之后发生更改(称为“散列”)。路由器可以通过使用哈希值编写应用程序内路由URL来利用此异常。

解决方案

遗憾的是没有解决方案......

documentation中所述,HashLocationStrategy在引导过程中启动。

  

...如果您愿意,可以在引导过程中使用覆盖切换到HashLocationStrategy

这进一步加强......

  

您必须选择策略,并且需要在项目早期进行正确的调用。一旦应用程序投入生产并且在野外有大量的应用程序URL引用,就不容易改变。

即。您需要开发内容以使用特定的位置策略,并且更改策略意味着您必须在开发期间更新重要的逻辑和其他路由功能,而不是像您希望的那样在运行时更新。