Qual é o método para redirecionar o usuário para um URL completamente externo no Angular 2. Por exemplo, se eu precisar redirecionar o usuário para um servidor OAuth2 para autenticar, como faria isso?
Location.go()
,, Router.navigate()
e Router.navigateByUrl()
são adequados para enviar o usuário para outra seção (rota) no aplicativo Angular 2, mas não consigo ver como eles poderiam ser usados para redirecionar para um site externo?
redirect
angular
angular2-routing
Michael Oryl
fonte
fonte
Respostas:
Você pode usar isso->
window.location.href = '...';
Isso mudaria a página para o que você quiser ..
fonte
document.location.href
ou mesmoLocation.href
como todos eles se referem ao mesmo objeto. Referência de localUma abordagem angular aos métodos descritos anteriormente é importar
DOCUMENT
de@angular/common
(ou@angular/platform-browser
em Angular <4) e usardentro de uma função.
some-page.component.ts
some-page.component.html
Confira o repo plateformBrowser para obter mais informações.
fonte
@angular/common
(ieimport { DOCUMENT } from '@angular/common';
), mas, caso contrário, isso funciona muito bem! Veja github.com/angular/angular/blob/master/packages/…@Inject(DOCUMENT) private document: any
DOCUMENT
facilita a substituição do objeto do documento por uma simulação nos testes de unidade. Ele também permite que uma implementação alternativa seja usada em outras plataformas (servidor / celular).constructor(@Inject(DOCUMENT) private document: Document) { }
A solução , como disse Dennis Smolek, é absolutamente simples. Defina
window.location.href
para o URL para o qual você deseja alternar e simplesmente funciona.Por exemplo, se você tivesse esse método no arquivo de classe (controlador) do seu componente:
Em seguida, você pode chamá-lo simplesmente com a
(click)
chamada apropriada em um botão (ou o que seja) no seu modelo:fonte
Eu acho que você precisa à target = "_ blank" , então você pode usar
window.open
:fonte
Se você usa o gancho de ciclo de vida OnDestry, pode estar interessado em usar algo assim antes de chamar window.location.href = ...
que acionará o retorno de chamada OnDestry no seu componente que você pode gostar.
Ohh, e também:
é onde você encontra o roteador.
--- EDIT --- Infelizmente, eu posso estar errado no exemplo acima. Pelo menos, não está funcionando como o esperado no meu código de produção no momento - então, até que eu tenha tempo para investigar mais, eu o resolvo assim (já que meu aplicativo realmente precisa do gancho, quando possível)
Roteamento básico para qualquer rota (fictícia) para forçar o gancho e, em seguida, navegue conforme solicitado.
fonte
nas versões mais recentes do Angular com a janela como um
any
fonte
Depois de arrancar minha cabeça, a solução é apenas adicionar http: // ao href.
fonte
Eu usei window.location.href = ' http: // external-url ';
Para mim, os redirecionamentos funcionaram no Chrome, mas não no Firefox. O código a seguir resolveu meu problema:
fonte
Fiz isso usando o Angular 2 Location, já que não queria manipular o objeto de janela global.
https://angular.io/docs/ts/latest/api/common/index/Location-class.html#!#prepareExternalUrl-anchor
Isso pode ser feito assim:
fonte
router.navigate(['/']);
é o que fez isso por mim.Nenhuma das soluções acima funcionou para mim, acabei de adicionar
Isso funcionou para mim.
Ou tente usar
fonte
No seu component.ts
No seu component.html
fonte