如何让 Angular2 dart 在 IE11 中工作

How to get Angular2 dart to work in IE11

我的应用程序和 IE11 有问题,所以我刚刚克隆了 toh-6 项目并尝试在 IE11 中 运行 它并得到了同样的错误:

RangeError (index): Index out of range: no indices are valid: 0
at ioore (http://10.0.2.2:8080/main.dart.js:3843:7)
at BrowserDomAdapter.getBaseHref[=10=] (http://10.0.2.2:8080/main.dart.js:29341:11)
at BrowserPlatformLocation.getBaseHrefFromDOM[=10=] (http://10.0.2.2:8080/main.dart.js:29423:9)
at PathLocationStrategy.PathLocationStrategy (http://10.0.2.2:8080/main.dart.js:29716:11)
at PathLocationStrategy.static.PathLocationStrategy$ (http://10.0.2.2:8080/main.dart.js:29724:11)
...

我已经尝试使用 angular2 2.0.02.2.0,两者都产生相同的错误。

我发现一个 GitHub issue 9 月份的问题似乎是同样的问题。

我认为 Google 已经在他们的项目中使用了 angular2 dart(我假设他们也支持 IE11),所以必须有解决这个问题的方法。

编辑:正如 GitHub 上的用户 @dergemkr 所指出的:仅当 <base href="/"> 设置为 [=15= 时才存在问题],这就是示例(设置为 <base href="/toh-6"> 有效的原因。

显然正在修复。与此同时,这就是你如何让它工作的:

angular2/lib/src/platform/browser/browser_adapter.dart#510 中更改此行:

  return (pathname[0] == '/') ? pathname : '/${pathname}';

对此:

return (pathname.isEmpty || pathname[0] == '/') ? pathname : '/${pathname}';