Jaka jest metoda przekierowania użytkownika do całkowicie zewnętrznego adresu URL w Angular 2. Na przykład, jeśli muszę przekierować użytkownika na serwer OAuth2 w celu uwierzytelnienia, jak mam to zrobić?
Location.go()
, Router.navigate()
i czy Router.navigateByUrl()
są w porządku, jeśli chcesz skierować użytkownika do innej sekcji (trasy) w aplikacji Angular 2, ale nie widzę, jak można ich użyć do przekierowania do witryny zewnętrznej?
redirect
angular
angular2-routing
Michael Oryl
źródło
źródło
Odpowiedzi:
Możesz użyć tego->
window.location.href = '...';
To zmieniłoby stronę na dowolną.
źródło
document.location.href
lub nawetLocation.href
jak wszystkie odnoszą się do tego samego obiektu. Odniesienie do lokalizacjiAngularne podejście do metod opisanych wcześniej polega na importowaniu
DOCUMENT
z@angular/common
(lub@angular/platform-browser
w Angular <4) i używaniuwewnątrz funkcji.
some-page.component.ts
some-page.component.html
Sprawdź repozytorium plateformBrowser, aby uzyskać więcej informacji.
źródło
@angular/common
(tj.import { DOCUMENT } from '@angular/common';
), Ale poza tym działa świetnie! Zobacz github.com/angular/angular/blob/master/packages/…@Inject(DOCUMENT) private document: any
DOCUMENT
ułatwia zastąpienie obiektu dokumentu makietą w testach jednostkowych. Pozwala również na alternatywną implementację do wykorzystania na innych platformach (serwerowych / mobilnych).constructor(@Inject(DOCUMENT) private document: Document) { }
Rozwiązanie , jak powiedział Dennis Smolek, jest banalnie proste. Ustaw
window.location.href
adres URL, na który chcesz się przełączyć i po prostu działa.Na przykład, jeśli masz tę metodę w pliku klasy komponentu (kontroler):
Następnie możesz to nazwać po prostu odpowiednim
(click)
wywołaniem przycisku (lub czegokolwiek) w swoim szablonie:źródło
Myślę, że potrzebujesz à target = "_ blank" , więc możesz użyć
window.open
:źródło
Jeśli korzystałeś z podpięcia cyklu życia OnDestry, możesz być zainteresowany użyciem czegoś takiego przed wywołaniem window.location.href = ...
to wywoła wywołanie zwrotne OnDestry w komponencie, które może Ci się spodobać.
Ohh, a także:
to miejsce, w którym znajduje się router.
--- EDYTUJ --- Niestety, mogłem się mylić w powyższym przykładzie. Przynajmniej nie działa teraz zgodnie z oczekiwaniami w moim kodzie produkcyjnym - więc dopóki nie mam czasu na dalsze zbadanie, rozwiązuję to w ten sposób (ponieważ moja aplikacja naprawdę potrzebuje haka, gdy to możliwe)
Zasadniczo trasowanie do dowolnej (fikcyjnej) trasy w celu wymuszenia zaczepienia, a następnie nawigacja zgodnie z żądaniem.
źródło
w nowszych wersjach Angulara z oknem jako plikiem
any
źródło
Po oderwaniu głowy rozwiązaniem jest po prostu dodanie http: // do href.
źródło
Użyłem window.location.href = ' http: // external-url ';
Dla mnie przekierowania działały w Chrome, ale nie działały w Firefoksie. Poniższy kod rozwiązał mój problem:
źródło
Zrobiłem to przy użyciu lokalizacji Angular 2, ponieważ nie chciałem samodzielnie manipulować globalnym obiektem okna.
https://angular.io/docs/ts/latest/api/common/index/Location-class.html#!#prepareExternalUrl-anchor
Można to zrobić w ten sposób:
źródło
router.navigate(['/']);
co to dla mnie zrobiło.Żadne z powyższych rozwiązań nie zadziałało, właśnie dodałem
To zadziałało dla mnie.
Lub spróbuj użyć
źródło
W swoim komponencie .ts
W Twoim pliku component.html
źródło