Rumah > hujung hadapan web > tutorial js > Perbincangan ringkas tentang navigateByUrl dan menavigasi dalam lompatan penghalaan sudut

Perbincangan ringkas tentang navigateByUrl dan menavigasi dalam lompatan penghalaan sudut

青灯夜游
Lepaskan: 2021-07-22 10:53:03
ke hadapan
3697 orang telah melayarinya

Artikel ini akan memperkenalkan kepada anda Angular navigateByUrl dan navigasi dalam Router routing jump, dan lihat cara menggunakan navigate() dan navigateByUrl().

Perbincangan ringkas tentang navigateByUrl dan menavigasi dalam lompatan penghalaan sudut

Sebelum memulakan pertempuran sebenar, mari kita lihat pengenalan navigateByUrl dan navigasi dalam dokumen rasmi. [Cadangan tutorial berkaitan: "tutorial sudut"]

navigateByUrl():

Definisi: Navigasi berdasarkan URL yang disediakan, Laluan mutlak mesti digunakan
Parameter: url (rentetan | UrlReee), tambahan (objek yang mengandungi set sifat, yang akan mengubah suai strategi navigasi)
Nilai pulangan: Mengembalikan Janji. Apabila navigasi berjaya, ia akan menyelesaikan kepada benar; apabila navigasi gagal atau ralat berlaku, ia akan menyelesaikan kepada palsu

ps: Penjelasan rasmi tentang penggunaan dan definisi navigateByUrl telah sangat jelas. Namun, jika ingatan kita tentang definisi laluan mutlak dan laluan relatif agak kabur, maka saya akan berikan contoh secara langsung supaya saya tidak mengganggu anak kecil untuk pergi mencari Du Niang lagi. Siapa saya untuk bertimbang rasa.

E:\mySoft\Git\bin  // 绝对路径。从盘符开始
Git\bin  // 相对路径。从当前路径开始
Salin selepas log masuk

navigasi():

Definisi: Navigasi berdasarkan tatasusunan arahan dan laluan titik permulaan yang disediakan. Jika laluan titik permulaan tidak ditentukan, navigasi mutlak bermula dari laluan akar
Parameter: arahan (mana-mana[]), tambahan
Nilai pulangan: Mengembalikan Janji. Apabila navigasi berjaya, ia akan menyelesaikan kepada benar; apabila navigasi gagal, ia akan menjadi palsu apabila navigasi gagal, ia akan menolak (menolak)

Perlu diperhatikan bahawa bahagian pertama <; 🎜>menavigasi Setiap parameter mestilah dalam bentuk tatasusunan, iaitu mana-mana[].

Berbalik kepada topik dan kembali kepada fungsi, kedua-dua kaedah ini digunakan untuk penghalaan lompatan dalam sudut. Jadi, kami mempunyai xxx penggunaan biasa berikut dalam projek sebenar Mari kita lihat satu persatu~~


Dalam pertempuran sebenar, kami mula-mula mentakrifkan tiga laluan, iaitu "laluan" a. , laluan b, laluan c”.

Tiga laluan ini adalah laluan adik-beradik dan semuanya berada dalam direktori akar.


navigateByUrl

路由a跳转到路由b
this.router.navigateByUrl(&#39;b&#39;);  // 正确。解析结果是 localhost:4200/b
this.router.navigateByUrl(&#39;./b&#39;);  // 错误。只能是绝对路径哦

路由b跳转到路由c
this.router.navigateByUrl(&#39;cascader&#39;, {});  // 解析结果是 localhost:4200/c
Salin selepas log masuk
navigateByUrl agak mudah untuk digunakan, mudah difahami dan penggunaannya agak mudah. Kami terutamanya memperkenalkan penggunaan navigasi berikut~~

navigasi

1 Lompat dari laluan b ke laluan c (lompat berdasarkan laluan akar)

this.router.navigate([&#39;c&#39;]);  // 绝对路径。 localhost:4200/c
this.router.navigate([&#39;./c&#39;]);  // 相对路径。 localhost:4200/c
Salin selepas log masuk
2. Laluan b melompat ke laluan c (melompat berdasarkan laluan semasa)

this.router.navigate([&#39;c&#39;],{ relativeTo:this.route });  // localhost:4200/b/c
this.router.navigate([&#39;c&#39;,1],{ relativeTo:this.route });  // localhost:4200/b/c/1
Salin selepas log masuk
3.

this.router.navigate([],{ relativeTo:this.route });  // localhost:4200/b
Salin selepas log masuk
4. Laluan b melompat ke laluan c (laluan membawa titik sauh untuk melompat)

this.router.navigate([&#39;c&#39;],{ fragment:&#39;zita&#39; });  // localhost:4200/c#zita
	现在么,成功跳转到路由c了。我又想从路由c跳转到路由a(携带锚点跳转)
	this.router.navigate([&#39;a&#39;], { preserveFragment: true});  // localhost:4200/a#zita
Salin selepas log masuk
5 dalam laluan)

this.router.navigate([&#39;c&#39;],{ queryParams:{name:&#39;zita&#39;} });  // localhost:4200/c?name=zita
	现在么,成功跳转到路由c了。我又想从路由c跳转到路由a,有以下五种情况:
	
	(1)不携带参数跳转
	this.router.navigate([&#39;a&#39;], { queryParamsHandling: null });  // localhost:4200/a
	(2)携带参数跳转
	this.router.navigate([&#39;a&#39;], { queryParamsHandling: &#39;merge&#39;});  // localhost:4200/a?name=zita
	
	执行完以下三种情况的代码后,看到的页面是路由a的页面哦!
	(3)携带参数。浏览器中的URL不变,参数会失效即,在路由a中打印的参数结果是{}
	this.router.navigate([&#39;a&#39;], { skipLocationChange: true });  // localhost:4200/c?name=zita
	(4)携带参数。浏览器中的URL不变,参数有效。在路由a中打印的参数结果是{name: "zita"}
	this.router.navigate([&#39;a&#39;], {skipLocationChange: true, queryParamsHandling: &#39;merge&#39;});  // localhost:4200/c?name=zita
	(5)携带参数。浏览器中的URL不变,参数有效,并且携带上其他参数。在路由a中打印的参数结果是{name: "zita",sex: "female"}
	this.router.navigate( [&#39;a&#39;], {skipLocationChange: true, queryParamsHandling: &#39;merge&#39;, queryParams: { sex: &#39;female&#39; } });  // localhost:4200/c?name=zita
Salin selepas log masuk
6 Laluan b melompat ke laluan c (status semasa tidak akan direkodkan dalam sejarah semasa navigasi)

 在路由c中,点击浏览器的返回按钮,会忽略路由b而直接跳转回到路由b的上一层路由
this.router.navigate([&#39;c&#39;],{ replaceUrl:true });  // localhost:4200/c
Salin selepas log masuk

Perbincangan ringkas tentang navigateByUrl dan menavigasi dalam lompatan penghalaan sudut

Akhir sekali, comel~

Jangan lupa untuk memperkenalkan penghala apabila menggunakan penghalaan~~

import { Router } from &#39;@angular/router&#39;;
constructor( private router: Router) { }
Salin selepas log masuk
Selain itu, jika Jika anda ingin mencetak parameter yang dibawa, coretan kod adalah seperti berikut:

import { Router, ActivatedRoute, Params } from &#39;@angular/router&#39;;
ngOnInit() {
    this.route.queryParams.subscribe((params: Params) => {
      console.log(params);
    });
}
Salin selepas log masuk
happyEnding...

Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila layari:

Pengenalan kepada Pengaturcaraan! !

Atas ialah kandungan terperinci Perbincangan ringkas tentang navigateByUrl dan menavigasi dalam lompatan penghalaan sudut. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:csdn.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan