在Angular 2中,把用户重定向到一个完全外部URL的方法是什么?例如,如果我需要将用户重定向到OAuth2服务器以进行身份验证,我该如何做呢?
Location.go()、Router.navigate()和Router.navigateByUrl()用于将用户发送到Angular 2应用程序中的另一个部分(路由),但我不知道如何使用它们重定向到外部站点?
在Angular 2中,把用户重定向到一个完全外部URL的方法是什么?例如,如果我需要将用户重定向到OAuth2服务器以进行身份验证,我该如何做呢?
Location.go()、Router.navigate()和Router.navigateByUrl()用于将用户发送到Angular 2应用程序中的另一个部分(路由),但我不知道如何使用它们重定向到外部站点?
当前回答
我认为你需要à target="_blank",这样你就可以使用window。开放:
gotoGoogle() : void {
window.open("https://www.google.com", "_blank");
}
其他回答
我使用的是Angular 2 Location,因为我不想自己操作全局窗口对象。
https://angular.io/docs/ts/latest/api/common/index/Location-class.html !# prepareExternalUrl-anchor
可以这样做:
import {Component} from '@angular/core';
import {Location} from '@angular/common';
@Component({selector: 'app-component'})
class AppCmp {
constructor(location: Location) {
location.go('/foo');
}
}
就像这样简单
window.location.href='http://www.google.com/';
正如丹尼斯·斯莫雷克所说,解决办法非常简单。将window.location.href设置为你想要切换到的URL,它就可以工作了。
例如,如果你在组件的类文件(控制器)中有这个方法:
goCNN() {
window.location.href='http://www.cnn.com/';
}
然后你可以很简单地在模板中的一个按钮(或任何东西)上调用它:
<button (click)="goCNN()">Go to CNN</button>
你可以使用这个-> window.location.href = '…';
这将改变页面到任何你想要的。
有两种选择:
如果你想重定向在同一窗口/标签 gotoExternalDomain () { window.location.href = ' http://google.com/ ' } 如果你想重定向到新标签 gotoExternalDomain () { (窗口).open(“http://google.com/”、“平等”); }