Мне нужно установить заголовки аутентификации для изображений, вызываемых из тега изображения (<img>
). Поэтому я создал трубу, используя ionic g pipe secureimages
.
Это создает канал для перехвата перехватчика http, где я устанавливаю заголовок. Ниже мой пользовательский канал
import { Pipe, PipeTransform } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { DomSanitizer, SafeUrl } from '@angular/platform-browser';
import { Observable } from 'rxjs/Observable';
/**
* Generated class for the SecureImagesPipe pipe.
*
* See https://angular.io/api/core/Pipe for more info on Angular Pipes.
*/
@Pipe({
name: 'secureimages',
})
export class SecureImagesPipe implements PipeTransform {
constructor(private http: HttpClient, private sanitizer: DomSanitizer) { }
transform(url): Observable<SafeUrl> {
return this.http
.get(url, { responseType: 'blob' })
.map(val => this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(val)));
}
}
и на перехватчике
const headers = req.headers
.set('Authorization', 'Bearer ' + token)
.append('Content-Type', 'application/json');
const reqClone = req.clone({
headers
});
return next.handle(reqClone);
И в теге изображения,
<img [attr.src]='{{this.imageURL}} | secureimages | async'/>
Но выдает ошибки компиляции. Но если я использую статический URL, он работает.
Как можно определить динамический URL-адрес изображения в теге изображения, чтобы он использовал предоставленный канал.