在Angular 2中将用户重定向到完全外部的URL的方法是什么。例如,如果我需要将用户重定向到OAuth2服务器以进行身份验证,我该如何做?
Location.go()
、Router.navigate()
和Router.navigateByUrl()
可以很好地将用户发送到Angular 2应用程序中的另一个部分(路由),但我不明白如何使用它们来重定向到外部站点?
发布于 2015-12-18 01:37:27
您可以使用这个-> window.location.href = '...';
这会将页面更改为您想要的任何内容。
发布于 2015-12-18 02:29:42
正如丹尼斯·斯莫莱克所说,The solution非常简单。将window.location.href
设置为您想要切换到的URL,它就可以正常工作。
例如,如果您在组件的类文件(控制器)中有此方法:
goCNN() {
window.location.href='http://www.cnn.com/';
}
然后,您可以通过对模板中的按钮(或其他任何东西)进行适当的(click)
调用来非常简单地调用它:
<button (click)="goCNN()">Go to CNN</button>
发布于 2016-09-21 22:47:41
如果您一直在使用OnDestry生命周期钩子,那么在调用window.location.href=之前,您可能会有兴趣使用下面这样的东西……
this.router.ngOnDestroy();
window.location.href = 'http://www.cnn.com/';
这将在您的组件中触发您可能喜欢的OnDestry回调。
哦,还有:
import { Router } from '@angular/router';
就是你找到路由器的地方。
-EDIT-遗憾的是,我在上面的例子中可能是错的。至少现在在我的产品代码中它不像exepected那样工作-所以,在我有时间进一步研究之前,我像这样解决它(因为我的应用程序在可能的时候确实需要钩子)
this.router.navigate(["/"]).then(result=>{window.location.href = 'http://www.cnn.com/';});
基本上,路由到任何(虚拟)路由以强制钩子,然后根据请求导航。
https://stackoverflow.com/questions/34338440
复制相似问题