2016-10-29 7 views
0

Я использую sanitizer.bypassSecurityTrustUrl, чтобы поместить ссылки на blobURL на странице. Это прекрасно работает, пока я не компилирую проект AoT.Класс имеет или использует имя «SafeUrl» из внешнего модуля, но не может быть назван

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 компиляции я получаю сообщение об ошибке:

Module build failed: Error: /.../src/app/app.component.ts (18,3): Return type of public method from exported class has or is using name 'SafeUrl' from external module "/.../node_modules/@angular/platform-browser/src/security/dom_sanitization_service" but cannot be named.)

Я использую CLI с угловыми 2.1. 0

Кто-нибудь знает, как я могу обойти эту проблему? Или это должно быть сообщено как ошибка?

ответ

4

Так что, кажется, я должен был добавить тип возвращаемого SafeUrl методу

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

Большое спасибо alxhub

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