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呼叫均正常发生
示例:
从SCSS加载的图像未发生
例如:
用于获取图像的网址:
所需的URL:
如何分辨angular以使用所需URL
来获取图像
我当时想从CDN提供Angular文件。最终将此代码添加到main.ts:
1 2 | declare let __webpack_public_path__: any; __webpack_public_path__ = window['cdnUrl']; |
在index.html中,您可以动态设置
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="/"> |