2016-05-25 11 views
24

Utilizzando Angular2, esiste un'impostazione per evitare di aggiungere il prefisso "non sicuro:" ai collegamenti. Ho bisogno di impostare i collegamenti per il protocollo che non è nella lista bianca di default in Angular2, ma è necessario per il nostro applicaion interno, così risultato è collegamento non valido:Come evitare di aggiungere prefisso "non sicuro" al collegamento di Angular2?

<a href="unsafe:Notes://MYSERVER/C1256D3B004057E8" .. 

Nel vecchio angolare c'era compileProvider.aHrefSanitizationWhitelist, ma non posso trovare qualcosa di simile in Angular2.

+0

Ho appena avuto uno spazio bianco di fronte al mio URI –

risposta

57

Utilizzare la DomSanitizer:

import {DomSanitizer} from '@angular/platform-browser'; 
... 
constructor(private sanitizer:DomSanitizer){} 
... 
let sanitizedUrl = this.sanitizer.bypassSecurityTrustUrl('Notes://MYSERVER/C1256D3B004057E8'); 

o creare un metodo per restituire l'url sterilizzata:

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

e poi nel modello:

<a [href]="sanitize('Notes://MYSERVER/C1256D3B004057E8')" ..

Demo Plunk

+0

Veri istruzioni precise e complete. Funziona perfettamente. Mi chiedo dove hai trovato questo .... :) – Veljac

+0

Attualmente si trova nella parte superiore della pagina di registro delle modifiche [angular2] (https://github.com/angular/angular/blob/master/CHANGELOG.md). È scritto per disinfettare lo stile, ma una volta che hai 'DomSanitizationService' il resto è solo una questione di un ctrl + spazio: D – Abdulrahman

+0

Prima di vedere la tua demo, non riuscivo a capire che mi mancavano alcune importazioni chiave:' @ angular/platform-browser' e '@ angular/platform-browser-dynamic'. Non c'era alcun modo in cui i miei URL andassero senza "non sicuri:" nella parte anteriore. – gustavohenke

21

Un altro modo, è possibile creare un servizio pipe per modificare l'URL non sicuro in un URL sicuro, quindi non è necessario riscrivere il codice in tutti i componenti. Creare un servizio pipe chiamato safe-url.pipe.ts.

import { Pipe, PipeTransform } from '@angular/core'; 
import { DomSanitizer } from '@angular/platform-browser'; 

@Pipe({ 
    name: 'safeUrl' 
}) 
export class SafeUrlPipe implements PipeTransform { 
    constructor(private domSanitizer: DomSanitizer) {} 
    transform(url) { 
    return this.domSanitizer.bypassSecurityTrustResourceUrl(url); 
    } 
} 

Quindi utilizzare nella visualizzazione.

Esempio: <a href="'Notes://MYSERVER/C1256D3B004057E8' | safeUrl"></a>

NOTA: Non dimenticare di iniettare questo servizio pipe nei tuoi app.module.ts

import { SafeUrlPipe } from './shared/safe-url.pipe'; //make sure your safe-url.pipe.ts file path is matching. 

E nel tuo nodo sezione Dichiarazioni del modulo.

@NgModule({ declarations: [SafeUrlPipe],...}); 
+0

Forse, è necessario inserire "href" tra parentesi quadre - [href], così Angular potrebbe eseguirlo. –

Problemi correlati