0

sanitizer.bypassSecurityTrustUrl用来在页面上放置指向 blobURL 的链接。只要我不 AoT 编译项目,它就可以正常工作。

import {DomSanitizer} from '@angular/platform-browser';

export class AppComponent {
  constructor(private sanitizer: DomSanitizer) {
  }

  sanitize(url: string) {
    return this.sanitizer.bypassSecurityTrustUrl(url);
  }
}

sanitize 函数采用如下 URL:

blob:http://localhost:4200/7c1d7221-aa0e-4d98-803d-b9be6400865b

如果我使用 AoT 编译,我会收到以下错误消息:

模块构建失败:错误:/.../src/app/app.component.ts (18,3):从导出类返回的公共方法类型已经或正在使用来自外部模块的名称“SafeUrl”“/... /node_modules/@angular/platform-b​​rowser/src/security/dom_sanitization_service”但不能命名。)

我将 CLI 与 Angular 2.1.0 一起使用

任何人都知道我可以如何规避这个问题?还是应该将其报告为错误?

4

2 回答 2

7

所以看来我必须SafeUrl在方法中添加一个返回类型

  sanitize(url: string):SafeUrl {
    return this.sanitizer.bypassSecurityTrustUrl(url);
  }

非常感谢alxhub

于 2016-10-31T17:53:21.503 回答
0

就我而言,我正在启动这样的属性:

public img64 = this.domSanitizer.bypassSecurityTrustResourceUrl('data:image/jpg;base64,' + this.base64Image);

导致同样的错误。

感谢@mottosson,我做对了(只需添加 SafeUrl 类型):

public img64: SafeUrl = this.domSanitizer.bypassSecurityTrustResourceUrl('data:image/jpg;base64,' + this.base64Image);
于 2018-02-02T16:00:13.967 回答