tab route page open new navigate another redirect angular angular2-routing

page - angular route redirect external url



¿Cómo redirigir a una URL externa en Angular2? (11)

¿Cuál es el método para redirigir al usuario a una URL completamente externa en Angular 2. Por ejemplo, si necesito redirigir al usuario a un servidor OAuth2 para autenticarme, ¿cómo lo haría?

Location.go() , Router.navigate() y Router.navigateByUrl() están bien para enviar al usuario a otra sección (ruta) dentro de la aplicación Angular 2, pero no veo cómo podrían usarse para redirigir a un sitio externo?


Después de arrancarme la cabeza, la solución es simplemente agregar http: // a href.

window.location.assign(''http://external-url'');


En su component.ts

import { Component } from ''@angular/core''; @Component({ ... }) export class AppComponent { ... goToSpecificUrl(url): void { window.location.href=url; } gotoGoogle() : void { window.location.href=''https://www.google.com''; } }

En su componente.html

<button type="button" (click)="goToSpecificUrl(''http://.com/'')">Open URL</button> <button type="button" (click)="gotoGoogle()">Open Google</button> <li *ngFor="item of itemList" (click)="goToSpecificUrl(item.link)"> // (click) don''t enable pointer when we hover so we should enable it by using css like: **cursor: pointer;**



Ninguna de las soluciones anteriores funcionó para mí, acabo de agregar

window.location.href = "www.google.com" event.preventDefault();

Esto funcionó para mí.

O intente usar

window.location.replace("www.google.com");


Puede usar esto-> window.location.href = ''...'';

Esto cambiaría la página a lo que quieras.


Si ha estado utilizando el enlace del ciclo de vida de OnDestry, puede estar interesado en utilizar algo como esto antes de llamar a window.location.href = ...

this.router.ngOnDestroy(); window.location.href = ''http://www.cnn.com/'';

eso activará la devolución de llamada de OnDestry en su componente que le pueda gustar.

Ohh, y también

import { Router } from ''@angular/router'';

es donde encuentras el enrutador.

--- EDITAR --- Lamentablemente, podría haber estado equivocado en el ejemplo anterior. Al menos no está funcionando como se esperaba en mi código de producción en este momento, así que, hasta que tenga tiempo para investigar más, lo resuelvo así (ya que mi aplicación realmente necesita el gancho cuando sea posible)

this.router.navigate(["/"]).then(result=>{window.location.href = ''http://www.cnn.com/'';});

Básicamente enrutamiento a cualquier ruta (ficticia) para forzar el gancho, y luego navegar según lo solicitado.


Un enfoque angular de los métodos descritos anteriormente es importar DOCUMENT desde @angular/common (o @angular/platform-browser en Angular <4) y usar

document.location.href = ''https://.com'';

dentro de una función.

some-page.component.ts

import { DOCUMENT } from ''@angular/common''; ... constructor(@Inject(DOCUMENT) private document: Document) { } goToUrl(): void { this.document.location.href = ''https://.com''; }

some-page.component.html

<button type="button" (click)="goToUrl()">Click me!</button>

Consulte el repositorio de plateformBrowser para obtener más información.


Usé window.location.href = '' http: // external-url '';

Para mí, las redirecciones funcionaron en Chrome, pero no funcionaron en Firefox. El siguiente código resolvió mi problema:

<a href="http://www.URL.com">Go somewhere</a>


en versiones más nuevas de Angular con ventana como any

(window as any).open(someUrl, "_blank");


La solución , como dijo Dennis Smolek, es muy simple. Establezca window.location.href en la URL a la que desea cambiar y simplemente funciona.

Por ejemplo, si tenía este método en el archivo de clase de su componente (controlador):

goCNN() { window.location.href=''http://www.cnn.com/''; }

Entonces podría llamarlo simplemente con la llamada apropiada (click) en un botón (o lo que sea) en su plantilla:

<button (click)="goCNN()">Go to CNN</button>


Creo que necesitas à target = "_ blank" , entonces puedes usar window.open :

gotoGoogle() : void { window.open("https://www.google.com", "_blank"); }