Angular Domsanitizer не принимает URL и выдает ошибку

#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 не отображается (в этом случае в консоли была бы фактическая ошибка, выделенная красным шрифтом)?