Apa metode untuk mengarahkan pengguna ke URL yang sepenuhnya eksternal di Angular 2. Sebagai contoh, jika saya perlu mengarahkan pengguna ke server OAuth2 untuk mengotentikasi, bagaimana saya melakukannya?
Location.go()
,, Router.navigate()
dan Router.navigateByUrl()
apakah boleh mengirim pengguna ke bagian lain (rute) dalam aplikasi Angular 2, tetapi saya tidak dapat melihat bagaimana mereka dapat digunakan untuk mengarahkan ulang ke situs eksternal?
redirect
angular
angular2-routing
Michael Oryl
sumber
sumber
Jawaban:
Anda bisa menggunakan ini->
window.location.href = '...';
Ini akan mengubah halaman menjadi apa pun yang Anda inginkan ..
sumber
document.location.href
atau bahkanLocation.href
karena mereka semua merujuk ke objek yang sama. Referensi LokasiPendekatan Angular ke metode yang dijelaskan sebelumnya adalah mengimpor
DOCUMENT
dari@angular/common
(atau@angular/platform-browser
dalam Angular <4) dan digunakandi dalam suatu fungsi.
some-page.component.ts
some-page.component.html
Lihat repo plateformBrowser untuk info lebih lanjut.
sumber
@angular/common
(yaituimport { DOCUMENT } from '@angular/common';
), tetapi jika tidak, ini akan berhasil! Lihat github.com/angular/angular/blob/master/packages/…@Inject(DOCUMENT) private document: any
DOCUMENT
memudahkan mengganti objek dokumen dengan tes unit tiruan. Ini juga memungkinkan implementasi alternatif untuk digunakan pada platform lain (server / seluler).constructor(@Inject(DOCUMENT) private document: Document) { }
Solusinya , seperti yang dikatakan Dennis Smolek, sangat sederhana. Setel
window.location.href
ke URL yang ingin Anda alihkan dan hanya berfungsi.Misalnya, jika Anda memiliki metode ini di file kelas komponen Anda (pengontrol):
Maka Anda bisa menyebutnya cukup sederhana dengan
(click)
panggilan yang sesuai pada tombol (atau apa pun) di template Anda:sumber
Saya pikir Anda perlu à target = "_ blank" , jadi Anda dapat menggunakan
window.open
:sumber
Jika Anda telah menggunakan kait siklus hidup OnDestry, Anda mungkin tertarik untuk menggunakan sesuatu seperti ini sebelum memanggil window.location.href = ...
yang akan memicu panggilan balik OnDestry di komponen Anda yang mungkin Anda sukai.
Ohh, dan juga:
Di sinilah Anda menemukan router.
--- EDIT --- Sayangnya, saya mungkin salah dalam contoh di atas. Setidaknya itu tidak berfungsi seperti yang diharapkan dalam kode produksi saya sekarang - jadi, sampai saya punya waktu untuk menyelidiki lebih lanjut, saya menyelesaikannya seperti ini (karena aplikasi saya benar-benar membutuhkan pengait jika memungkinkan)
Pada dasarnya merutekan ke rute (dummy) apa pun untuk memaksa pengait, lalu menavigasi sesuai permintaan.
sumber
di versi Angular dengan jendela yang lebih baru sebagai
any
sumber
Setelah merobek kepalaku, solusinya adalah menambahkan http: // ke href.
sumber
Saya menggunakan window.location.href = ' http: // external-url ';
Bagi saya pengalihan bekerja di Chrome, tetapi tidak berfungsi di Firefox. Kode berikut menyelesaikan masalah saya:
sumber
Saya melakukannya menggunakan Lokasi 2 Angular karena saya tidak ingin memanipulasi objek jendela global sendiri.
https://angular.io/docs/ts/latest/api/common/index/Location-class.html#!#prepareExternalUrl-anchor
Itu bisa dilakukan seperti ini:
sumber
router.navigate(['/']);
adalah apa yang dilakukan untukku.Tidak ada solusi di atas yang berfungsi untuk saya, saya hanya menambahkan
Ini berhasil untuk saya.
Atau coba gunakan
sumber
Di component.ts Anda
Di component.html Anda
sumber