@this-dot/ng-utils
is a collection of Angular utils which we would like to continuously extend and improve.
--
Install the package:
npm install @this-dot/ng-utils
or
yarn add @this-dot/ng-utils
A pipe for redirecting an <img>
tag's src
attribute request to use Angular's HttpClient
.
It supports:
✅ Fetching images using the HttpClient
, so the requests will hit all the HttpInterceptor
implementations that are needed
✅ Displaying a custom loading image while the requested image loads
✅ Displaying a custom error image if the request fails
Import the UseHttpImageSourcePipeModule
from the package
import { UseHttpImageSourcePipeModule } from '@this-dot/ng-utils';
then add it to the imports array in the Angular module with the configurations:
@NgModule({
/* other module props */
imports: [
UseHttpImageSourcePipeModule.forRoot({
loadingImagePath: '/assets/images/your-custom-loading-image.png',
errorImagePath: 'assets/images/your-custom-error-image.png',
}),
/* other modules */
],
})
export class AppModule {}
You can omit the configuration, by default the loadingImagePath
and the errorImagePath
both default to null
.
To use the module's provide pipe, just add UseHttpImageSourcePipeModule
in your submodule that uses them. E.g.
@NgModule({
/* other module props */
imports: [UseHttpImageSourcePipeModule /* other modules */],
})
export class YourSubModule {}
Use the useHttpImgSrc
pipe to request the source image using the HttpClient
<ng-container *ngFor="let image of images$ | async"
<img width="200px" [src]="image.src | useHttpImgSrc" />
</ng-container>
You can override the default loading and error images with the following syntax:
<ng-container *ngFor="let image of images$ | async"
<img width="200px" [src]="image.src | useHttpImgSrc:'/assets/loading.png':'/assets/error.png'" />
</ng-container>