ejemplos - ¿Cómo evitar agregar el prefijo "inseguro" al enlace de Angular2?
angular wikipedia (2)
Esta pregunta ya tiene una respuesta aquí:
Usando Angular2, hay una configuración para evitar agregar el prefijo " inseguro: " a los enlaces. Necesito establecer enlaces para el protocolo que no está en la lista blanca por defecto en Angular2, pero es necesario para nuestra aplicación interna, por lo que el resultado es un enlace no válido:
<a href="unsafe:Notes://MYSERVER/C1256D3B004057E8" ..
En Angular anterior había compileProvider.aHrefSanitizationWhitelist, pero no puedo encontrar algo similar en Angular2.
De otra forma, puede crear un servicio de canalización para cambiar la url insegura a url segura, por lo que no es necesario volver a escribir el código en todos los componentes. Cree un servicio safe-url.pipe.ts
llamado 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);
}
}
Luego use en su vista.
Ejemplo: <a href="''Notes://MYSERVER/C1256D3B004057E8'' | safeUrl"></a>
NOTA : no se olvide de insertar este servicio de tubería en su app.module.ts
import { SafeUrlPipe } from ''./shared/safe-url.pipe''; //make sure your safe-url.pipe.ts file path is matching.
Y en la sección de declaraciones del módulo de nodo.
@NgModule({ declarations: [SafeUrlPipe],...});
Use el DomSanitizer
:
import {DomSanitizer} from ''@angular/platform-browser'';
...
constructor(private sanitizer:DomSanitizer){}
...
let sanitizedUrl = this.sanitizer.bypassSecurityTrustUrl(''Notes://MYSERVER/C1256D3B004057E8'');
o crea un método para devolver la URL desinfectada:
sanitize(url:string){
return this.sanitizer.bypassSecurityTrustUrl(url);
}
y luego en tu plantilla:
<a [href]="sanitize(''Notes://MYSERVER/C1256D3B004057E8'')" ..