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

Angular How to set Dynamically(runtime) --deploy-url?

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

index.html

1
  window['base-href'] = window.location.pathname;

app.module.ts

1
2
3
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以使用所需URL

来获取图像


我当时想从CDN提供Angular文件。最终将此代码添加到main.ts:

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

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

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

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

1
--deploy-url ../static/

或者您可能需要

1
--deploy-url ./static/

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

1
  <base href="/">