#angular #typescript #ionic-framework #angular-dom-sanitizer
#angular #typescript #ionic-framework #angular-dom-sanitizer
Вопрос:
Я пытаюсь очистить URL-адрес для использования в качестве атрибута данных для тега объекта для отображения svg.
my.page.html
<object [id]="'chr' index" [data]="SVGToView[0] | safe" type="image/svg xml"></object>
my.page.ts
SVGToView:Array<any> = ['../../assets/graphic.svg'];
safe.pipe.ts
import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
@Pipe({
name: 'safe'
})
export class SafePipe implements PipeTransform {
constructor(private sanitizer: DomSanitizer) {}
transform(url: string) {
console.log(this.sanitizer.bypassSecurityTrustResourceUrl(url));
return this.sanitizer.bypassSecurityTrustResourceUrl(url);
}
}
Выдает ошибку:
SafeResourceUrlImpl {changingThisBreaksApplicationSecurity: "../../assets/graphic.svg"}
Канал работает нормально, svg в порядке (правильное расположение и жестко запрограммированный он отображается нормально)
Знаете ли вы, почему Domsanitizer не принимает URL этого ресурса?
Спасибо
Комментарии:
1. Попробуйте, чтобы URL был только
assets/graphic.svg
.2. Попробовал это .. та же ошибка и загружает все мобильное приложение в объект, который должен содержать svg в обоих случаях
3. О, я думаю, для «динамического» использования это действительно так
bypassSecurityTrustUrl
. (Что касается привязки, я не совсем уверен, нужно ли вам вообще выполнять очистку или это делается автоматически.)4. Это используется для URL-адресов ресурсов (файлов в каталоге ресурсов приложения), а не для URL-адресов http, поэтому правильным средством очистки является bypassSecurityTrustResourceUrl, основанный на документах, которые я прочитал, и да, его определенно необходимо очистить, поскольку он выдавал ошибки небезопасного URL, и в противном случае я бы не спрашивал здесь
5. Итак, я немного попробовал это сам. В основном воспроизведена ваша настройка, и это на самом деле не выдает ошибку. Он просто выводит
SafeResourceUrl
-объект на консоль, у которой есть свойствоchangingThisBreaksApplicationSecurity
. Я думаю, на самом деле это так и должно работать. Вы действительно достигли точки, когда svg не отображается (в этом случае в консоли была бы фактическая ошибка, выделенная красным шрифтом)?