在Angular 2中,把用户重定向到一个完全外部URL的方法是什么?例如,如果我需要将用户重定向到OAuth2服务器以进行身份验证,我该如何做呢?

Location.go()、Router.navigate()和Router.navigateByUrl()用于将用户发送到Angular 2应用程序中的另一个部分(路由),但我不知道如何使用它们重定向到外部站点?


当前回答

在较新的Angular版本中,window为any

(window as any).open(someUrl, "_blank");

其他回答

使用前面描述的方法的Angular方法是从@angular/common(或Angular中的@angular/platform-browser)导入DOCUMENT < 4)和使用

document.location.href = 'https://stackoverflow.com';

在函数内部。

some-page.component.ts

import { DOCUMENT } from '@angular/common';
...
constructor(@Inject(DOCUMENT) private document: Document) { }

goToUrl(): void {
    this.document.location.href = 'https://stackoverflow.com';
}

some-page.component.html

<button type="button" (click)="goToUrl()">Click me!</button>

查看platformBrowser repo以获得更多信息。

有两种选择:

如果你想重定向在同一窗口/标签 gotoExternalDomain () { window.location.href = ' http://google.com/ ' } 如果你想重定向到新标签 gotoExternalDomain () { (窗口).open(“http://google.com/”、“平等”); }

就像这样简单

window.location.href='http://www.google.com/';

我认为你需要à target="_blank",这样你就可以使用window。开放:

gotoGoogle() : void {
     window.open("https://www.google.com", "_blank");
}

你可以用多种方式重定向:

like

window.location.href = 'redirect_url';

Angular文档的另一种方式:

从angular导入文档,文档必须被注入,否则你会得到错误

import { DOCUMENT  } from '@angular/common';
export class AppComponent {
     constructor(
       @Inject(DOCUMENT) private document: Document
    ) {}
   this.document.location.href = 'redirect_url';
}