IE9 PathLocationStrategy Angular 4

Sah*_*rav 6 angular2-routing angular

我正在使用IE9和PathLocationStrategy与Angular4但它似乎没有工作.它只是附加"#"无限时间.我尝试添加history.js polyfill,但似乎没有任何工作.

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

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

RouterModule.forRoot(COMMON_ROUTES, { useHash: !Boolean(history.pushState) }),
Run Code Online (Sandbox Code Playgroud)

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

Zze*_*Zze 3

原因

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


解决方案

不幸的是没有解决方案......

如文档中所述,HashLocationStrategy 在引导过程中启动。

...如果您愿意,可以在引导过程中切换到具有覆盖的 HashLocationStrategy 。

这进一步加强...

您必须选择一个策略,并且需要在项目早期做出正确的决定。一旦应用程序投入生产并且存在大量应用程序 URL 引用,以后更改就不容易了。

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