Tengo un componente angular 5 que necesita abrir un enlace en una nueva pestaña, probé lo siguiente:
<a href="www.example.com" target="_blank">page link</a>
cuando abro el enlace, la aplicación se vuelve lenta y abre una ruta como:
localhost:4200/www.example.com
Mi pregunta es: ¿Cuál es la forma correcta de hacer esto en angular?
<a href="https://example.com" target="_blank">page link</a>
<a [href]="'www.example.com'" target="_blank">Link</a>
Respuestas:
Utilice
window.open()
. ¡Es bastante sencillo!En su
component.html
archivo<a (click)="goToLink("www.example.com")">page link</a>
En su
component.ts
archivogoToLink(url: string){ window.open(url, "_blank"); }
fuente
href=''
, para que parezca que se puede hacer clicsimplemente use la URL completa como href así:
<a href="https://www.example.com/" target="_blank">page link</a>
fuente
En el
app-routing.modules.ts
archivo:{ path: 'hero/:id', component: HeroComponent }
En el
component.html
archivo:target="_blank" [routerLink]="['/hero', '/sachin']"
fuente
<a [routerLink]="" (click)="openSite(SiteUrl)">{{SiteUrl}}</a>
y en su Component.ts
openSite(siteUrl) { window.open("//" + siteUrl, '_blank'); }
fuente
Acabo de descubrir una forma alternativa de abrir una nueva pestaña con el enrutador.
En tu plantilla,
<a (click)="openNewTab()" >page link</a>
Y en su component.ts, puede usar serializeUrl para convertir la ruta en una cadena, que se puede usar con
window.open()
openNewTab() { const url = this.router.serializeUrl( this.router.createUrlTree(['/example']) ); window.open(url, '_blank'); }
fuente
Prueba esto:
window.open(this.url+'/create-account')
No es necesario usarlo
'_blank'
.window.open
por defecto abre un enlace en una nueva pestaña.fuente
Solo agregue
target="_blank"
al<a mat-raised-button target="_blank" [routerLink]="['/find-post/post', post.postID]" class="theme-btn bg-grey white-text mx-2 mb-2"> Open in New Window </a>
fuente
Algunos navegadores pueden bloquear las ventanas emergentes creadas por
window.open(url, "_blank");
. Una alternativa es crear un enlace y hacer clic en él.... constructor(@Inject(DOCUMENT) private document: Document) {} ... openNewWindow(): void { const link = this.document.createElement('a'); link.target = '_blank'; link.href = 'http://www.your-url.com'; link.click(); link.remove(); }
fuente