Angular 2 rc4无法通过在地址栏中输入URL进入页面

4

我刚刚将我的项目更新到rc 4版本,并遇到了问题。

当我使用systemjs来配置我的项目时,一切正常。

当我使用webpack运行项目时(我正在使用angular2-webpack-starter),项目成功运行,没有bug。我可以通过[routerLink]配置的每个链接访问。

但是,如果我在浏览器的地址栏中输入相同的链接,却什么也没有发生。我的应用程序没有加载任何内容。以下是我的项目的一些屏幕截图:

屏幕截图

有人能帮我吗?非常感谢。


你的链接不是公共链接,请将你的截图上传到像 imgur 这样的公共网站,或调整你的谷歌设置。总之,在你的 index.html 中似乎缺少 <base href="/"> - Harry Ninh
抱歉,链接现在是公开的。我已经将<base href="/">放置在index.html的<head></head>中了。 - Giang Đỗ Hoàng
2个回答

4

这需要由你的后端服务器处理。

你需要将所有请求发送到索引页,以便Angular可以捕获请求并从那里解析路由。

发生的情况是当你访问你的索引(/)页面时,Angular接管了控制权,当你点击[routerlink]时,它会假装在浏览器中改变页面(实际上没有与服务器进行任何交互)。当你通过输入URL访问任何不是索引的页面时,你没有加载你的Angular应用程序,因此它无法在浏览器中编辑路由。通过将所有路由转发到索引,我们让Angular决定如何处理所有路由,而不是服务器。


像这样的问题:https://dev59.com/210Z5IYBdhLWcg3wdQPT - Günter Zöchbauer
非常感谢,我解决了我的问题。我的index.html的静态路径设置为dev文件夹而不是dist文件夹。因此,当我以生产模式加载我的项目时,它找不到正确的index.html。 - Giang Đỗ Hoàng
太棒了!我很高兴你解决了问题 :) - Andy-Delosdos

0
如果您通过JS提供内容,请将此代码添加到Express路由。
var path = require('path')

app.get('/*', function(req, res) {
  res.sendFile(path.join(__dirname + '/static/index.html'));
});

1
虽然这段代码片段可能解决了问题,但包括说明确实有助于提高您的帖子质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您代码建议的原因。 - DimaSan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接