班级已拥有或正在使用名称' SafeUrl'来自外部模块但无法命名

时间:2016-10-29 14:24:19

标签: javascript angular angular2-cli angular2-aot

我正在使用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 / @角/平台的浏览器/ SRC /安全/ dom_sanitization_service"   但不能命名。)

我在Angular 2.1.0中使用CLI

有谁知道如何规避这个问题?或者它应该被报告为错误?

2 个答案:

答案 0 :(得分:7)

所以我似乎必须在方法

中添加CKFetchDatabaseChangesOperation的返回类型
SafeUrl

非常感谢alxhub

答案 1 :(得分: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);