Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度2-异常:错误:资源URL上下文中使用了不安全的值_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 角度2-异常:错误:资源URL上下文中使用了不安全的值

Javascript 角度2-异常:错误:资源URL上下文中使用了不安全的值,javascript,angular,typescript,Javascript,Angular,Typescript,我得到以下错误: 角度2-异常:错误:资源URL上下文中使用了不安全的值 这可能与启动时不立即使用媒体项有关吗?还是与URL不安全有关?我正在试着消毒它 export class HomeComponent { sanitizer: DomSanitizationService; errorMessage: string; activeMedia: MediaItem = new MediaItem(0, '', '', '', '', '', ''); constructo

我得到以下错误:

角度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>

更新:更改

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

我得到:原始异常:错误:需要一个安全的资源URL,得到一个URL

通过将cleanURL方法中的代码更改为:

 return this.sanitizer.bypassSecurityTrustResourceUrl(oldURL);
而不是:

 return this.sanitizer.bypassSecurityTrustUrl(oldURL);
试试这个:

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

我已经用这个解决方案显示了PDF,但是cleanURL()方法运行了多次,导致PDF闪烁。不要作为函数运行,保持值持久不计算
cleanURL(oldURL: string): string  {
 return this._sanitationService.sanitize(SecurityContext.URL, oldURL);
}