Quelle est la méthode pour rediriger l'utilisateur vers une URL complètement externe dans Angular 2. Par exemple, si je dois rediriger l'utilisateur vers un serveur OAuth2 afin de s'authentifier, comment le ferais-je?
Location.go()
, Router.navigate()
et Router.navigateByUrl()
sont-ils bien pour envoyer l'utilisateur vers une autre section (route) dans l'application Angular 2, mais je ne vois pas comment ils pourraient être utilisés pour rediriger vers un site externe?
redirect
angular
angular2-routing
Michael Oryl
la source
la source
Réponses:
Vous pouvez utiliser ceci->
window.location.href = '...';
Cela changerait la page en ce que vous voulez.
la source
document.location.href
ou mêmeLocation.href
comme ils font tous référence au même objet. Référence de l'emplacementUne approche angulaire des méthodes précédemment décrites consiste à importer
DOCUMENT
depuis@angular/common
(ou@angular/platform-browser
dans Angular <4) et à utiliserà l'intérieur d'une fonction.
some-page.component.ts
some-page.component.html
Consultez le référentiel de plateformBrowser pour plus d'informations.
la source
@angular/common
(ieimport { DOCUMENT } from '@angular/common';
), mais sinon cela fonctionne très bien! Voir github.com/angular/angular/blob/master/packages/…@Inject(DOCUMENT) private document: any
DOCUMENT
facilite le remplacement de l'objet document par une maquette dans les tests unitaires. Il permet également d'utiliser une implémentation alternative sur d'autres plateformes (serveur / mobile).constructor(@Inject(DOCUMENT) private document: Document) { }
La solution , comme l'a dit Dennis Smolek, est extrêmement simple. Définissez
window.location.href
l'URL vers laquelle vous souhaitez basculer et cela fonctionne.Par exemple, si vous aviez cette méthode dans le fichier de classe de votre composant (contrôleur):
Ensuite, vous pouvez l'appeler tout simplement avec l'
(click)
appel approprié sur un bouton (ou autre) dans votre modèle:la source
Je pense que vous avez besoin d'un target = "_ blank" , alors vous pouvez utiliser
window.open
:la source
Si vous avez utilisé le hook de cycle de vie OnDestry, vous pourriez être intéressé à utiliser quelque chose comme celui-ci avant d'appeler window.location.href = ...
qui déclenchera le rappel OnDestry dans votre composant que vous pourriez aimer.
Ohh, et aussi:
est l'endroit où vous trouvez le routeur.
--- EDIT --- Malheureusement, je me suis peut-être trompé dans l'exemple ci-dessus. Au moins, cela ne fonctionne pas comme prévu dans mon code de production pour le moment - donc, jusqu'à ce que j'aie le temps d'enquêter plus avant, je le résous comme ça (puisque mon application a vraiment besoin du hook lorsque c'est possible)
En gros, routage vers n'importe quelle route (factice) pour forcer le hook, puis naviguez comme demandé.
la source
dans les nouvelles versions de Angular avec fenêtre en tant que
any
la source
Après m'être arraché la tête, la solution est simplement d'ajouter http: // à href.
la source
J'ai utilisé window.location.href = ' http: // external-url ';
Pour moi, les redirections fonctionnaient dans Chrome, mais ne fonctionnaient pas dans Firefox. Le code suivant a résolu mon problème:
la source
Je l'ai fait en utilisant Angular 2 Location car je ne voulais pas manipuler moi-même l'objet de la fenêtre globale.
https://angular.io/docs/ts/latest/api/common/index/Location-class.html#!#prepareExternalUrl-anchor
Cela peut être fait comme ceci:
la source
router.navigate(['/']);
est ce que cela a fait pour moi.Aucune des solutions ci-dessus n'a fonctionné pour moi, je viens d'ajouter
Cela a fonctionné pour moi.
Ou essayez d'utiliser
la source
Dans votre component.ts
Dans votre component.html
la source