I'm working on an Angular app where I'm faced with setting an HTML base href value, and/or an APP_BASE_HREF value.
What is the difference and relation between these?
I'm working on an Angular app where I'm faced with setting an HTML base href value, and/or an APP_BASE_HREF value.
What is the difference and relation between these?
In general, you should only have to set the <base href>.
Exceptions are if you do not have access to the index.html or you want the HTML5 style URLs to be different from where you are serving the Angular files (then you need to provide the APP_BASE_HREF).
What is the difference and relation between these?
The <base href> is used as the default base URL (see source code) when generating HTML5 style URLs for your web app. Additionally, it "specifies a base path for resolving relative URLs to assets such as images, scripts, and style sheets," namely your Angular distribution. Since <base href> is just a HTML element, you can see the Mozilla docs for details and see the community wiki for implications.
If for some reason you fall into the above two exceptions, you can provide the APP_BASE_HREF instead, which is solely used for routing purposes (using the PathLocationStrategy) and does not set or interact with the <base href>.
<base href> is used as the base URL for routing when APP_BASE_HREF is NOT set.<base href> and APP_BASE_HREF can be used for deployment scenarios in which the displayed URL and actual location where files are being served are different.index.html, the APP_BASE_HREF must be set if using the PathLocationStrategy.