2016-10-04 1 views
5

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

Angular 2 - EXCEPTION: Error: unsafe value used in a resource URL context 

Может быть связан с не имеющим элементом медиа сразу при запуске? Или это связано с тем, что 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> 

ответ

25

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

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

к:

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

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

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

return this.sanitizer.bypassSecurityTrustResourceUrl(oldURL); 

Вместо того, чтобы:

return this.sanitizer.bypassSecurityTrustUrl(oldURL); 
0

Попробуйте с этим:

cleanURL(oldURL: string): string { 
return this._sanitationService.sanitize(SecurityContext.URL, oldURL); 
} 
Смежные вопросы