我能够按如下所示动态设置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使用所需的网址获取图像
答案 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="/">