Angular如何动态设置(运行时)--deploy-url?

时间:2019-02-22 00:23:33

标签: angular

我能够按如下所示动态设置base-href。

index.html

<script>
  window['base-href'] = window.location.pathname;
</script>

app.module.ts

providers: [ 
        { provide: APP_BASE_HREF, useValue: window['base-href'] },
    ],

这很适合路由。

它不适用于资产加载

如何设置资产? --deploy-url在编译时有效,但是我如何在运行时进行呢?

提到的链接用于路由,而不用于从SCSS文件加载的资产(图像等)。

我所有的http呼叫均正常发生

示例: https://domain/<env>/<contexname>/<restcall_URI>

从SCSS加载的图片未发生

例如: 用于获取图像的网址: https://domain/assets/img/xyz.jpg

所需的URL: https://domain/<env>/<contexname>/assets/img/xyz.jpg

如何告诉angular使用所需的网址获取图像

2 个答案:

答案 0 :(得分:1)

我一直希望从CDN提供Angular文件。最终将此代码添加到main.ts中:

declare let __webpack_public_path__: any;
__webpack_public_path__ = window['cdnUrl'];

在index.html中,您可以动态设置cdnUrl

window.cdnUrl = 'https://...';

答案 1 :(得分:0)

在我们的例子中,我们需要相同的 dist 文件集来使用和不使用 url 路径前缀。解决方案是使用相对的deploy-url并动态更改html标签

--deploy-url ../static/

或者你可能需要

--deploy-url ./static/

  <base href="/some-path/">

  <base href="/">