Angular 2 的路由器在使用 HTML5 路由时是否损坏?

Is Angular 2's Router broken when using HTML5 routes?

这个全新的路由语法听起来好得令人难以置信,现在我认为它确实如此。我放弃了让它工作的尝试,在这里我注意到甚至 Angular 2 页面中的主要示例都没有工作。如果你打开现场示例并尝试它,只需单击它就可以正常工作,你可以看到 url 中的路径发生了变化,但它只是改变了字符串路径并不真正存在,如果你复制你的url 并将其发送给某人,他们将收到以下错误:

{
    "statusCode": 404,
    "error": "Not Found"
}

地狱即使你只是刷新页面你也会得到同样的错误。

如果您想重现问题,请打开此 URL:

https://angular.io/resources/live-examples/tutorial/ts/plnkr.html

单击实时预览右上角的 "Launch the preview in a separate window" 按钮,等待它加载页面,当您看到 URL 变为如下内容时:

http://run.plnkr.co/KMzM8hkaCyhlnf3b/dashboard

按 F5 刷新页面,您将收到错误消息。

这是一个错误,它应该工作的方式,还是他们甚至没有尝试过的东西?他们是否已经从糟糕的路由器实施中再次开始,或者我只是完全迷失了如何让它发挥作用?请指教!

我猜我最好还是使用主题标签实现。

这是设计的(由 HTML5 而不是由 Angular 引入)。切换到 HashLocationStrategy 或使用知道如何处理(重定向)此类请求的服务器。 另见 https://github.com/angular/angular/issues/4735

事实上,上传应用程序时出现 404 错误是正常的,因为浏览器中的实际地址正在更新(并且没有 # / hashbang 方法)。默认情况下,HTML5 历史用于 Angular2 中的重用。

如果您不想出现 404 错误,则需要更新您的服务器以便为每个路由路径提供 index.html 文件。

这个 link 也可以帮助您:

希望对你有帮助, 蒂埃里