Ответ 1
Вы можете использовать this-> window.location.href= '...';
Это изменит страницу на то, что вы хотите..
Что такое метод перенаправления пользователя на полностью внешний URL-адрес в Angular 2. Например, если мне нужно перенаправить пользователя на сервер OAuth2 для проверки подлинности, как бы я это сделал?
Location.go()
, Router.navigate()
и Router.navigateByUrl()
подходят для отправки пользователя в другой раздел (маршрут) в приложении Angular 2, но я не вижу, как они могут быть использованы для перенаправления на внешний сайт?
Вы можете использовать this-> window.location.href= '...';
Это изменит страницу на то, что вы хотите..
Angular подход к ранее описанным методам заключается в импорте DOCUMENT
из @angular/common
(или @angular/platform-browser
в Angular
& Lt; 4) и использовать
document.location.href = 'https://stackoverflow.com';
внутри функции.
некоторые-page.component.ts
import { DOCUMENT } from '@angular/common';
...
constructor(@Inject(DOCUMENT) private document: Document) { }
goToUrl(): void {
this.document.location.href = 'https://stackoverflow.com';
}
некоторые-page.component.html
<button type="button" (click)="goToUrl()">Click me!</button>
Ознакомьтесь с репозиторием plateformBrowser для получения дополнительной информации.
Решение, как сказал Деннис Смолек, прост. Установите window.location.href
на URL, к которому вы хотите перейти, и он просто работает.
Например, если вы использовали этот метод в своем файле (контроллере) класса компонентов:
goCNN() {
window.location.href='http://www.cnn.com/';
}
Тогда вы могли бы назвать это достаточно просто с помощью соответствующего (click)
вызова кнопки (или любого другого) в вашем шаблоне:
<button (click)="goCNN()">Go to CNN</button>
Я думаю, что вам нужен target = "_ blank", поэтому вы можете использовать window.open
:
gotoGoogle() : void {
window.open("https://www.google.com", "_blank");
}
Если вы используете привязку жизненного цикла OnDestry, вам может быть интересно использовать что-то вроде этого, прежде чем вызывать window.location.href=...
this.router.ngOnDestroy();
window.location.href = 'http://www.cnn.com/';
который вызовет обратный вызов OnDestry в вашем компоненте, который вам может понравиться.
Ohh, а также:
import { Router } from '@angular/router';
находится маршрутизатор.
--- EDIT --- К сожалению, я мог ошибаться в приведенном выше примере. По крайней мере, он не работает как exepected в моем производственном кодексе прямо сейчас, поэтому, пока у меня не будет времени для дальнейшего изучения, я решаю его так (так как моему приложению действительно нужен крюк, когда это возможно)
this.router.navigate(["/"]).then(result=>{window.location.href = 'http://www.cnn.com/';});
В основном маршрутизация на любой (фиктивный) маршрут для принудительного подключения, а затем переход по запрошенному адресу.
в более новых версиях Angular с окном как- any
(window as any).open(someUrl, "_blank");
Решив проблему, я просто добавляю http://в href.
<a href="http://www.URL.com">Go somewhere</a>
Я использовал window.location.href= 'http://external-url';
Для меня перенаправления работали в Chrome, но не работали в Firefox. Следующий код разрешил мою проблему:
window.location.assign('http://external-url');
Я сделал это с помощью 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');
}
}
В component.ts
import { Component } from '@angular/core';
@Component({
...
})
export class AppComponent {
...
goToSpecificUrl(url): void {
window.location.href=url;
}
gotoGoogle() : void {
window.location.href='https://www.google.com';
}
}
В компоненте .html
<button type="button" (click)="goToSpecificUrl('http://stackoverflow.com/')">Open URL</button>
<button type="button" (click)="gotoGoogle()">Open Google</button>
<li *ngFor="item of itemList" (click)="goToSpecificUrl(item.link)"> // (click) don't enable pointer when we hover so we should enable it by using css like: **cursor: pointer;**
Ни одно из вышеперечисленных решений для меня не сработало, я просто добавил
window.location.href = "www.google.com"
event.preventDefault();
Это сработало для меня.
Или попробуйте использовать
window.location.replace("www.google.com");