淺談Angular路由跳轉中的navigateByUrl和navigate
這篇文章跟大家介紹一下Angular Router路由跳轉中的navigateByUrl與navigate,看看navigate()和navigateByUrl()的使用方法。
開始進入實戰前,我們先來看看下官方文件中對navigateByUrl、navigate的介紹。 【相關教學推薦:《angular教學》】
navigateByUrl() :
定義:基於所提供的URL 進行導航,必須使用絕對路徑
參數:url(string | UrlReee )、extras(一個包含一組屬性的對象,它會修改導航策略)
傳回值:傳回一個Promise。當導航成功時,它會解析成true;導航失敗或出錯時,它會解析成false
ps:對於navigateByUrl的用法和定義官方已經交代的很清楚了。但是,如果我們對其中的定義絕對路徑和相對路徑的概念有點記憶模糊了,那麼,我,直接給出例子,就不麻煩小寶貝們再去找度娘了,誰讓我貼心吶
E:\mySoft\Git\bin // 绝对路径。从盘符开始 Git\bin // 相对路径。从当前路径开始
navigate():
定義:基於所提供的命令陣列和起點路由進行導航。如果沒有指定起點路由,則從根路由開始進行絕對導航
參數:commands(any[] )、extras
傳回值:傳回一個Promise。當導航成功時,它會解析成true;導航失敗時,它會解析成false;導航出錯時,它會拒絕(reject)
值得注意的點是,navigate的第一個參數必須是陣列形式的即any[]。
言歸正傳,回歸到功能上,這兩個方法都是在angular種進行路由跳轉的。那麼我們在實際專案中有以下常見的xxx種用法,我們一一來看看吧~~
#實戰中,我們先來定義三個路由,分別是「路由a、路由b、路由c」。
這三個路由分別是同級路由並且都在根目錄下。
navigateByUrl
路由a跳转到路由b this.router.navigateByUrl('b'); // 正确。解析结果是 localhost:4200/b this.router.navigateByUrl('./b'); // 错误。只能是绝对路径哦 路由b跳转到路由c this.router.navigateByUrl('cascader', {}); // 解析结果是 localhost:4200/c
navigateByUrl的用法比較簡單,容易理解,用法也比較單一。我們主要來介紹以下navigate的用法哈~~
navigate
1、路由b跳到路由c(以根路由為基礎進行跳轉)
this.router.navigate(['c']); // 绝对路径。 localhost:4200/c this.router.navigate(['./c']); // 相对路径。 localhost:4200/c
2、路由b跳到路由c(以目前路由為基礎進行跳轉)
this.router.navigate(['c'],{ relativeTo:this.route }); // localhost:4200/b/c this.router.navigate(['c',1],{ relativeTo:this.route }); // localhost:4200/b/c/1
3、路由b跳到路由b(以目前路由為基礎進行跳轉)
this.router.navigate([],{ relativeTo:this.route }); // localhost:4200/b
4、路由b跳到路由c(路由中攜帶錨點進行跳轉)
this.router.navigate(['c'],{ fragment:'zita' }); // localhost:4200/c#zita 现在么,成功跳转到路由c了。我又想从路由c跳转到路由a(携带锚点跳转) this.router.navigate(['a'], { preserveFragment: true}); // localhost:4200/a#zita
5、路由b跳到路由c(路由中傳參數進行跳轉)
this.router.navigate(['c'],{ queryParams:{name:'zita'} }); // localhost:4200/c?name=zita 现在么,成功跳转到路由c了。我又想从路由c跳转到路由a,有以下五种情况: (1)不携带参数跳转 this.router.navigate(['a'], { queryParamsHandling: null }); // localhost:4200/a (2)携带参数跳转 this.router.navigate(['a'], { queryParamsHandling: 'merge'}); // localhost:4200/a?name=zita 执行完以下三种情况的代码后,看到的页面是路由a的页面哦! (3)携带参数。浏览器中的URL不变,参数会失效即,在路由a中打印的参数结果是{} this.router.navigate(['a'], { skipLocationChange: true }); // localhost:4200/c?name=zita (4)携带参数。浏览器中的URL不变,参数有效。在路由a中打印的参数结果是{name: "zita"} this.router.navigate(['a'], {skipLocationChange: true, queryParamsHandling: 'merge'}); // localhost:4200/c?name=zita (5)携带参数。浏览器中的URL不变,参数有效,并且携带上其他参数。在路由a中打印的参数结果是{name: "zita",sex: "female"} this.router.navigate( ['a'], {skipLocationChange: true, queryParamsHandling: 'merge', queryParams: { sex: 'female' } }); // localhost:4200/c?name=zita
6、路由b跳到路由c(導航時不會把目前狀態記入歷史)
在路由c中,点击浏览器的返回按钮,会忽略路由b而直接跳转回到路由b的上一层路由 this.router.navigate(['c'],{ replaceUrl:true }); // localhost:4200/c
最後的最後,小可愛們~
在使用路由的時候千千萬萬不要忘記引入router哦~~
import { Router } from '@angular/router'; constructor( private router: Router) { }
另外,如果你想打印攜帶過來的參數,那麼代碼片段如下:
import { Router, ActivatedRoute, Params } from '@angular/router'; ngOnInit() { this.route.queryParams.subscribe((params: Params) => { console.log(params); }); }
happyEnding…
更多程式相關知識,請造訪:程式設計入門! !
以上是淺談Angular路由跳轉中的navigateByUrl和navigate的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

這篇文章繼續Angular的學習,帶大家了解Angular中的元數據和裝飾器,簡單了解一下他們的用法,希望對大家有幫助!

Angular.js是一種可自由存取的JavaScript平台,用於建立動態應用程式。它允許您透過擴展HTML的語法作為模板語言,以快速、清晰地表示應用程式的各個方面。 Angular.js提供了一系列工具,可協助您編寫、更新和測試程式碼。此外,它還提供了許多功能,如路由和表單管理。本指南將討論在Ubuntu24上安裝Angular的方法。首先,您需要安裝Node.js。 Node.js是一個基於ChromeV8引擎的JavaScript運行環境,可讓您在伺服器端執行JavaScript程式碼。要在Ub

angular中怎麼使用monaco-editor?以下這篇文章記錄下最近的一次業務中用到的 monaco-editor 在 angular 中的使用,希望對大家有幫助!

這篇文章跟大家分享一個Angular實戰,了解一下angualr 結合 ng-zorro 如何快速開發一個後台系統,希望對大家有幫助!

隨著網路的快速發展,前端開發技術也不斷改進與迭代。 PHP和Angular是兩種廣泛應用於前端開發的技術。 PHP是一種伺服器端腳本語言,可以處理表單、產生動態頁面和管理存取權限等任務。而Angular是一種JavaScript的框架,可以用來開發單一頁面應用程式和建構元件化的網頁應用程式。本篇文章將介紹如何使用PHP和Angular進行前端開發,以及如何將它們

Angular框架中元件的預設顯示行為不是區塊級元素。這種設計選擇促進了元件樣式的封裝,並鼓勵開發人員有意識地定義每個元件的顯示方式。透過明確設定CSS屬性 display,Angular組件的顯示可以完全控制,從而實現所需的佈局和響應能力。
