Угловое 2 - ИСКЛЮЧЕНИЕ: Ошибка: небезопасное значение, используемое в контексте URL ресурса

Я получаю следующую ошибку:

Угловое 2 - ИСКЛЮЧЕНИЕ: Ошибка: небезопасное значение, используемое в контексте URL ресурса

Может быть, это связано с тем, что при запуске нет элемента мультимедиа? Или это связано с тем, что URL-адрес не является безопасным? Я пытаюсь его дезинфицировать.

export class HomeComponent {

  sanitizer: DomSanitizationService;
  errorMessage: string;
  activeMedia: MediaItem = new MediaItem(0, '', '', '', '', '', '');

  constructor(
    private mediaStorage: MediaStorageService, 
    private harvesterService: HarvesterService, 
    sanitizer: DomSanitizationService) {

    this.sanitizer = sanitizer;
    // Initial call - 
    harvesterService.getMediaItems(10, 'type', 'category');
    let subscription = harvesterService.initialMediaHarvestedEvent.subscribe(() => {
      this.activeMedia = mediaStorage.mediaList[0];
      let newURL = this.activeMedia.URL + '?rel=0&autoplay=1';
      newURL = newURL.replace('watch?v=', 'v/');
      this.activeMedia.URL = newURL; //sanitizer.bypassSecurityTrustUrl(newURL);
      console.log(newURL);
    });
  }

  cleanURL(oldURL: string): SafeResourceUrl {
    return this.sanitizer.bypassSecurityTrustUrl(oldURL);
  }
}

Код шаблона:

<div class="row" >
    <iframe 
      id="video"  
      class="video" 
      src="{{ cleanURL(activeMedia.URL) }}" 
      frameborder="0" 
      allowfullscreen>
    </iframe>
</div>

Ответы

Ответ 1

ОБНОВЛЕНО: После изменения

 src="{{cleanURL(activeMedia.URL)}}"

чтобы:

 [src]="cleanURL(activeMedia.URL)"

Я получаю: ОРИГИНАЛЬНОЕ ИСКЛЮЧЕНИЕ: Ошибка: требуется безопасный ResourceURL, получил URL-адрес

который решается с изменением кода в методе cleanURL для:

 return this.sanitizer.bypassSecurityTrustResourceUrl(oldURL);

Вместо:

 return this.sanitizer.bypassSecurityTrustUrl(oldURL);

Ответ 2

Попробуйте следующее:

cleanURL(oldURL: string): string  {
 return this._sanitationService.sanitize(SecurityContext.URL, oldURL);
}