Angular 2/4:不是从<base href =“...”/>访问资源

时间:2017-08-04 04:40:12

标签: angular angular-ui-router

我们在sitecore网站中嵌入了一个角度应用。我们在下拉字体方面遇到了一些问题。我们的角度应用程序部署到“/ resources / angular / sales”,我们使用绝对路径引入主脚本,但是我们包含的字体是相对于<base href="/">的路径,因此托管页面的路径

angular应用程序为站点提供组件,并托管在多个页面上。

如果我创建基础/resources/angular/sales,则angular会将URL重写为该网站,并将网站404s重写。

我想到的两个选项是:

  1. 防止角度更新网址。这将是理想的,因为我们根本不希望它更新它,至少不是通过路由,我们有一个小问题,因为角度将/附加到URL,但我们已经处理了
  2. 完全禁用路由,我们不会在此应用中使用它。
  3. 告诉应用程序字体等的完整位置,即忽略base
  4. 任何实现其中一个选项或其他解决方案的方法都会很棒。

1 个答案:

答案 0 :(得分:0)

Angular路由需要baseHref属性,而deployUrl属性可用于检索资产。您可以通过检查构建的应用程序的index.html轻松检查两个参数的工作情况。

在我的情况下,我必须为生产配置设置deployUrl和baseHref(您可以使用angular.json中的Angular CLI 6来实现)以使其工作。

然后baseHref被添加到所有相对URL的前缀,因此我想要选择退出的URL必须是绝对的。在我的情况下,在URL之前放置一个“/”就足够了,所以:

  • 之前:致电'api / users / 123'
  • 之后:致电'/ api / users / 123'