¿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 puedo ver cómo podrían usarse para redirigir a un sitio externo.
redirect
angular
angular2-routing
Michael Oryl
fuente
fuente
Respuestas:
Puedes usar esto->
window.location.href = '...';
Esto cambiaría la página a lo que quieras.
fuente
document.location.href
o inclusoLocation.href
ya que todos se refieren al mismo objeto. Referencia de ubicaciónUn enfoque angular de los métodos descritos anteriormente es importar
DOCUMENT
desde@angular/common
(o@angular/platform-browser
en Angular <4) y usardentro de una función.
some-page.component.ts
some-page.component.html
Consulte el repositorio de plateformBrowser para obtener más información.
fuente
@angular/common
(es decirimport { DOCUMENT } from '@angular/common';
), pero de lo contrario, ¡esto funciona muy bien! Ver github.com/angular/angular/blob/master/packages/…@Inject(DOCUMENT) private document: any
DOCUMENT
hace que sea más fácil reemplazar el objeto del documento con un simulacro en las pruebas unitarias. También permite una implementación alternativa para ser utilizada en otras plataformas (servidor / móvil).constructor(@Inject(DOCUMENT) private document: Document) { }
La solución , como dijo Dennis Smolek, es muy simple. Establezca
window.location.href
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):
Entonces podría llamarlo simplemente con la
(click)
llamada apropiada en un botón (o lo que sea) en su plantilla:fuente
Creo que necesitas à target = "_ blank" , entonces puedes usar
window.open
:fuente
Si ha estado utilizando el enlace del ciclo de vida de OnDestry, puede estar interesado en usar algo como esto antes de llamar a window.location.href = ...
eso activará la devolución de llamada OnDestry en su componente que le pueda gustar.
Ohh, y también
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)
Básicamente enrutamiento a cualquier ruta (ficticia) para forzar el gancho, y luego navegar según lo solicitado.
fuente
en versiones más nuevas de Angular con ventana como
any
fuente
Después de arrancarme la cabeza, la solución es simplemente agregar http: // a href.
fuente
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:
fuente
Lo hice usando Angular 2 Location ya que no quería manipular el objeto de la ventana global.
https://angular.io/docs/ts/latest/api/common/index/Location-class.html#!#prepareExternalUrl-anchor
Se puede hacer así:
fuente
router.navigate(['/']);
es lo que hizo por miNinguna de las soluciones anteriores funcionó para mí, acabo de agregar
Esto funcionó para mí.
O intente usar
fuente
En su component.ts
En su componente.html
fuente