Angular:URL更改不会首次重新加载页面

时间:2017-12-21 11:24:32

标签: angular

我知道这是一个不好的问题,而且我没有代码,但我希望有人可以对此有所了解。

我有一个Angular网站。

该网站会加载不同产品的销售数据。产品名称显示在URL

从网站链接到不同产品,网站运行良好。

如果我直接使用产品名称更新网址并按Enter键,则网站不会重新加载。我必须选择whoile URL并再次按Enter键以重新加载页面。

有谁能想到为什么会发生这种情况?

1 个答案:

答案 0 :(得分:1)

您需要一种方法告诉服务器您输入的URL是有效的Angular路由。因此,您需要将这些URL映射到index.html。

因为我在后端使用Java / Spring。我就是这样做的。这解决了这个问题:

@Controller
public class Routing {

    @RequestMapping({"/resources/**"}) 
    public String api(final HttpServletRequest request){
        String path = (String) request.getAttribute(
                HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
        return path;
    }

    @RequestMapping({ "", "/login", "/products/**" })
    public String gui() {
        return "forward:/index.html";
    }
}

这里第一种方法只返回以“/ resources / **”开头的路径,因为在此路径下,我的所有REST API都可用。第二种方法转发到index.html用于Angular路由。

请注意,转发到index.html不会更改浏览器地址栏上的URL,但会触发Angular来控制。