2016-10-04 1 views
5

ich die folgende Störung erhalte:Angular 2 - AUSNAHME: Fehler: unsichere Wert in einer Ressource URL Kontext verwendet

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

Könnte es nicht mit der Medien-Objekt sofort beim Start zusammenhängen? Oder hängt es damit zusammen, dass die URL nicht sicher ist? Ich versuche es zu sanieren.

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); 
} 


} 

Der Template-Code ist:

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

Antwort

25

AKTUALISIERT: Nach dem

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

zum Ändern:

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

Ich erhalte: ORIGINAL AUSNAHME: Fehler: Benötigte eine sichere ResourceURL, bekam eine URL

, die mit der Änderung des Code innerhalb der cleanURL Methode gelöst:

return this.sanitizer.bypassSecurityTrustResourceUrl(oldURL); 

Statt:

return this.sanitizer.bypassSecurityTrustUrl(oldURL); 
0

Versuchen mit diesem:

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