Dokumen saat ini hanya berbicara tentang mendapatkan parameter rute, bukan segmen rute yang sebenarnya.
Misalnya, jika saya ingin mencari induk dari rute saat ini, bagaimana itu mungkin?
angular
angular2-routing
pdeva
sumber
sumber
window.location.pathname
window.location
adalah bahwa jika di masa depan, mereka ingin mengimplementasikan rendering sisi server, mereka akan menghadapi beberapa kesulitan karenawindow
tidak ada pada server Node.js, tetapi mereka perlu menggunakan metode standar Angular untuk mengakses rute. dan mereka akan baik-baik saja di server dan browser.Jawaban:
Router V3 baru memiliki properti url.
sumber
this.router.events.filter((event: any) => event instanceof NavigationEnd).subscribe(event => { console.log('this is what your looking for ', event.url); });
. Pastikan Anda mengimporimport { Router, NavigationEnd } from '@angular/router';
RC4 sudut:
Anda bisa mengimpor
Router
dari@angular/router
Kemudian disuntikkan:
Lalu panggil parameter URL-nya:
sumber
Suntikkan
Location
ke komponen Anda dan bacalocation.path();
Anda harus menambahkanAnda perlu menambahkanROUTER_DIRECTIVES
suatu tempat sehingga Angular dapat menyelesaikannyaLocation
.import: [RouterModule]
ke modul.Memperbarui
Di router V3 (RC.3) Anda dapat menyuntikkan
ActivatedRoute
dan mengakses lebih banyak detail menggunakansnapshot
propertinya.atau
Lihat juga Pendengar peristiwa router 2 sudut
sumber
navigate
metode bersama dengan (ditambahkan) nama rute anak yang ingin saya navigasikan.MyTrackingService
dijelaskan di stackoverflow.com/a/34548656/217408 akan memungkinkan untuk mengakses nilai-nilai ini.canActivate()
metode, sehingga saya bisa mengarahkan ulang ke halaman "login", dan kemudian mengarahkan kembali ke rute asli setelah pengguna mengautentikasi?untuk router baru> = RC.3
Cara terbaik dan sederhana untuk melakukan ini adalah!
sumber
Gunakan ini
Dan di
main.ts
imporEDIT
Cara modern
sumber
/
.Bagi yang masih mencari ini. Pada Angular 2.x ada beberapa cara untuk melakukannya.
Referensi:
sumber
Untuk mendapatkan segmen rute:
sumber
Anda bisa mencobanya
Cara alternatif
window.location.pathname
yang memberi nama path.sumber
Untuk mendapatkan rute lengkap sepenuhnya saat ini, Anda dapat menggunakan ini
sumber
window
Objek asli berfungsi dengan baik jugaCATATAN: JANGAN GUNAKAN INI DALAM RENDERING SISI SERVER
sumber
versi singkat jika Anda memiliki Router diimpor maka Anda cukup menggunakan beberapa hal seperti
this.router.url === "/ search"
lain lakukan hal berikut
1) Impor router
2) Nyatakan entri dalam konstruktor
3) Gunakan nilainya dalam fungsi Anda
@victor menjawab membantu saya, ini adalah jawaban yang sama dengan dia tetapi dengan sedikit detail, karena mungkin membantu seseorang
sumber
sumber
Di Angular2 Rc1 Anda dapat menyuntikkan RouteSegment dan meneruskannya dengan metode naviagte.
sumber
Dengan angular 2.2.1 (dalam proyek berbasis angular2-webpack-starter) berfungsi sebagai berikut:
Dalam templat AppComponent, Anda dapat menggunakan mis {{activeUrl}}.
Solusi ini terinspirasi oleh kode RouterLinkActive.
sumber
sudut 2 rc2
sumber
Inilah yang bekerja untuk saya dalam Angular 2.3.1.
Ini
data
adalah objek dan kita perluurl
properti yang terkandung dalam objek itu. Jadi kami menangkap nilai itu dalam suatu variabel dan kami dapat menggunakan variabel itu di halaman HTML kami juga. Sebagai contoh, saya ingin menampilkan div hanya ketika pengguna di halaman Beranda. Dalam hal ini, nilai url router saya akan menjadi/home
. Jadi saya bisa menulis div dengan cara berikut:sumber
Saya punya masalah yang sama menggunakan
Saya mendapatkan rute saat ini dengan params permintaan. Solusi yang saya lakukan adalah menggunakan ini sebagai gantinya:
Bukan solusi yang sangat bagus, tetapi sangat membantu.
sumber
Anda dapat menggunakan
ActivatedRoute
untuk mendapatkan router saat iniJawaban Asli (untuk versi RC)
Saya menemukan solusi di AngularJS Google Group dan itu sangat mudah!
Inilah jawaban aslinya
https://groups.google.com/d/msg/angular/wn1h0JPrF48/zl1sHJxbCQAJ
sumber
url
sekarang bukan lagi URL dan string, tetapi aComponentInstruction
.sumber
Untuk keperluan Anda, Anda dapat menggunakan
this.activatedRoute.pathFromRoot
.Dengan bantuan pathFromRoot Anda bisa mendapatkan daftar url induk dan memeriksa apakah bagian yang diperlukan dari URL sesuai dengan kondisi Anda.
Untuk informasi tambahan, silakan baca artikel ini http://blog.2muchcoffee.com/getting-current-state-in-angular2-router/ atau menginstal ng2-router-helper dari npm
sumber
Untuk menemukan induk dari rute saat ini, Anda dapat memperolehnya
UrlTree
dari router, menggunakan rute relatif:Kemudian untuk mendapatkan segmen dari outlet utama:
sumber
Sampai sekarang, saya mendapatkan jalur saya sebagai berikut -
Di mana,
router
adalah contoh dariActivatedRoute
sumber
sumber
sumber
ini sederhana, di sudut 2 Anda hanya perlu mengimpor perpustakaan Router seperti ini:
Kemudian dalam konstruktor komponen atau layanan Anda harus instantiate seperti ini:
Kemudian di bagian mana pun dari kode, baik dalam fungsi, metode, konstruksi, apa pun:
sumber
Anda dapat menggunakan file .ts
sumber
ini bisa menjadi jawaban Anda, gunakan metode params dari rute yang diaktifkan untuk mendapatkan parameter dari URL / rute yang ingin Anda baca, di bawah ini adalah cuplikan demo
sumber
sumber
Jika Anda perlu mengakses url saat ini, biasanya Anda harus menunggu NavigationEnd atau NavigationStart untuk melakukan sesuatu. Jika Anda hanya berlangganan acara router, langganan akan menampilkan banyak acara dalam siklus hidup rute. Sebagai gantinya, gunakan operator RxJS untuk memfilter acara yang Anda butuhkan saja. Efek samping yang menguntungkan dari ini sekarang kita memiliki jenis yang lebih ketat!
sumber
Saya menghadapi masalah ketika saya membutuhkan jalur URL ketika pengguna menavigasi melalui aplikasi atau mengakses URL (atau menyegarkan pada URL tertentu) untuk menampilkan komponen anak berdasarkan URL.
Lebih lanjut, saya ingin sebuah Observable yang dapat dikonsumsi dalam template, jadi router.url bukanlah suatu pilihan. Juga router.events berlangganan karena perutean dipecat sebelum templat komponen diinisialisasi.
Semoga ini bisa membantu, semoga berhasil!
sumber