Angular中的ActivatedRoute和Router

Angular中的ActivatedRoute和Router解釋

在Angular中,ActivatedRouteRouter是兩個核心的路由服務。他們都提供可以用來檢查和操作當前頁面路由信息的方法和屬性。

ActivatedRoute

ActivatedRoute是一個保存關于當前路由狀態(如路由參數、查詢參數以及其他數據)的對象。 它可以讓開發人員從路由器中訪問路由參數和查詢參數。

ActivatedRoute是路由事件數據的載體。 這包括在導航期間收集的靜態和動態段以及查詢參數、Fragment等等。

例如,對于這個路由:

{ path: 'product/:id', component: ProductDetailComponent }

通過獲取ActivatedRoute,我們可以輕松地訪問id值:

import { Component } from '@angular/core';
import { ActivatedRoute } from '@angular/router';@Component({selector: 'app-product-detail',template: 'Product Details Component'
})export class ProductDetailComponent implements OnInit {constructor(private route: ActivatedRoute) {}ngOnInit() {const id = +this.route.snapshot.paramMap.get('id');// ...}
}

在上面的代碼示例中,ActivatedRoute通過注入該服務作為構造函數的參數而獲取。接下來,我們只需使用快照對象(即this.route.snapshot)就可以快速訪問路由參數。要獲取參數的特定值,可以使用get方法訪問params屬性,該方法采用一個字符串參數并返回一個字符串:

const id = +this.route.snapshot.paramMap.get('id');

這里的加號意味著我們將結果轉換為數字類型。

另一種訪問路由參數的方法是通過訂閱paramMap可觀察值。subscribe`方法定義給observable帶來副作用,就像任何** RxJS **observable一樣:

this.route.paramMap.subscribe(params => {const id = +params.get('id');// ...
});

這種方式允許動態更改URL。(你的組件不需要重新創建。)

Router

Router通過向前和向后導航和路由裝置提供了一種明顯且簡單的編程API,同時仍然保留完全配置的強大能力。

路由器是一個抽象的概念,它用于選擇輸入URL,并將其轉換為經過測試的規則來獲取特定組件。 在Angular中,路由器是NgModule中的引導項之一。 路由器設置可能看起來非常困難,但是一旦了解了基本情況,它們就會感到自然。

基本導航

首先,我們根據常規用法配置Routes數組:

// app-routing.module.ts file
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './home/home.component';
import { ProductListComponent } from './product-list/product-list.component';
import { ProductDetailComponent } from './product-detail/product-detail.component';const routes: Routes = [{ path: '', component: HomeComponent },{ path: 'products', component: ProductListComponent },{ path: 'products/:id', component: ProductDetailComponent }
];@NgModule({imports: [RouterModule.forRoot(routes)],exports: [RouterModule]
})
export class AppRoutingModule { }

我們設定了三個路由:空路徑(主頁),產品列表和特定ID的產品。 每個路徑都與對應的組件相關聯。

然后,我們在模板或組件類中安排具有相應路由聲明的鏈接:

<!-- home.component.html -->
<a routerLink="/">Home</a>
<a routerLink="/products">Product List</a><!-- product-list.component.html -->
<ul><li *ngFor="let product of products"><a [routerLink]="['/products', product.id]">{{ product.name }}</a></li>
</ul><!-- product-detail.component.html -->
<h2>Product Detail</h2>
<p>{{ product }}</p>

在上面的所有代碼示例中,我們使用了routerLink指令完成路由導航。現在,當用戶點擊鏈接時,路由器會根據路徑加載相應的組件并在指令的位置動態渲染該組件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39197.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39197.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39197.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux下grep通配容易混淆的地方

先上一張圖: 我希望找到某個版本為8的一個libXXX.8XXX.so ,那么應該怎么寫呢? 先看這種寫法對不對: 是不是結果出乎你的意料之外? 那么我們來看一下規則: 這里的 "*" 表示匹配前一個字符的零個或多個 于是我們就不難理解了: lib*8*.so 表示 包…

醫療PACS源碼,支持三維多平面重建、三維容積重建、三維表面重建、三維虛擬內窺鏡

C/S架構的PACS系統源碼&#xff0c;PACS主要進行病人信息和影像的獲取、處理、存儲、調閱、檢索、管理&#xff0c;并通過網絡向全院提供病人檢查影像及診斷報告&#xff1b;各影像科室之間共享不同設備的病人檢查影像及診斷報告;在診斷工作站上&#xff0c;調閱HIS中病人的其它…

拒絕擺爛!C語言練習打卡第二天

&#x1f525;博客主頁&#xff1a;小王又困了 &#x1f4da;系列專欄&#xff1a;每日一練 &#x1f31f;人之為學&#xff0c;不日近則日退 ??感謝大家點贊&#x1f44d;收藏?評論?? 目錄 一、選擇題 &#x1f4dd;1.第一題 &#x1f4dd;2.第二題 &#x1f4dd;…

P1304 哥德巴赫猜想

題目描述 輸入一個偶數 N N N&#xff0c;驗證 4 ~ N 4\sim N 4~N 所有偶數是否符合哥德巴赫猜想&#xff1a;任一大于 2 2 2 的偶數都可寫成兩個質數之和。如果一個數不止一種分法&#xff0c;則輸出第一個加數相比其他分法最小的方案。例如 10 10 10&#xff0c; 10 …

Springboot寫單元測試

導入依賴 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintag…

django實現悲觀鎖樂觀鎖

前期準備 # 線上賣圖書-圖書表 圖書名字&#xff0c;圖書價格&#xff0c;庫存字段-訂單表&#xff1a; 訂單id&#xff0c;訂單名字# 表準備class Book(models.Model):name models.CharField(max_length32)price models.IntegerField() #count models.SmallIntegerField…

Python實時監控鍵盤的輸入并打印出來

要實現Python實時監控鍵盤的輸入并打印出來&#xff0c;可以使用pynput模塊。 首先&#xff0c;需要安裝pynput模塊&#xff1a; pip install pynput 然后&#xff0c;可以編寫以下代碼來實現實時監控鍵盤輸入并打印出來的功能&#xff1a; from pynput import keyboard# 定…

【Unity每日一記】方位辨別—向量的叉乘點乘結合

&#x1f468;?&#x1f4bb;個人主頁&#xff1a;元宇宙-秩沅 &#x1f468;?&#x1f4bb; hallo 歡迎 點贊&#x1f44d; 收藏? 留言&#x1f4dd; 加關注?! &#x1f468;?&#x1f4bb; 本文由 秩沅 原創 &#x1f468;?&#x1f4bb; 收錄于專欄&#xff1a;uni…

grafana 的 ws websocket 連接不上的解決方式

使用了多層的代理方式&#xff0c;一層沒有此問題 錯誤 WebSocket connection to ‘wss://ip地址/grafana01/api/live/ws’ failed: 日志報錯 msg“Request Completed” methodGET path/api/live/ws status403 解決方式 # allowed_origins is a comma-separated list of o…

Flutter:簡單搞一個內容高亮

內容高亮并不陌生&#xff0c;特別是在搜索內容頁面&#xff0c;可以說四處可見&#xff0c;就拿掘金這個應用而言&#xff0c;針對某一個關鍵字&#xff0c;我們搜索之后&#xff0c;與關鍵字相同的內容&#xff0c;則會高亮展示&#xff0c;如下圖所示&#xff1a; 如上的效果…

【Linux操作系統】舉例解釋Linux系統編程中文件io常用的函數

在Linux系統編程中&#xff0c;文件IO操作是非常常見和重要的操作之一。通過文件IO操作&#xff0c;我們可以打開、讀取、寫入和關閉文件&#xff0c;對文件進行定位、復制、刪除和重命名等操作。本篇博客將介紹一些常用的文件IO操作函數。 文章目錄 1. open()1.1 原型、參數及…

讀書筆記 |【項目思維與管理】? 順勢而動

讀書筆記 |【項目思維與管理】? 順勢而動 一、企業步入“終結者時代”二、過去成功的經驗也許是最可怕的三、做好非重復性的事四、適應客戶是出發點五、向知識型企業轉變六、速度是決勝條件 &#x1f496;The Begin&#x1f496;點點關注&#xff0c;收藏不迷路&#x1f496; …

docker私有倉庫harbor

一、安裝docker-compose yum install docker-compose -y 二、下載harbor安裝包 tar -xf harbor-online-installer-v2.1.0.tgz cp harbor.yml.tmpl harbor.yml 三、修改harbor配置 [rootharbor ~]# vim harbor.ymlhostname: "修改為本機ip" harboradminpassword:…

每天一道leetcode:1218. 最長定差子序列(動態規劃中等)

今日份題目&#xff1a; 給你一個整數數組 arr 和一個整數 difference&#xff0c;請你找出并返回 arr 中最長等差子序列的長度&#xff0c;該子序列中相鄰元素之間的差等于 difference 。 子序列 是指在不改變其余元素順序的情況下&#xff0c;通過刪除一些元素或不刪除任何…

iTOP-i.MX8M開發板添加USB網絡設備驅動

選中支持 USB 網絡設備驅動&#xff0c;如下圖所示&#xff1a; [*] Device Drivers→ *- Network device support → USB Network Adapters→ {*} Multi-purpose USB Networking Framework 將光標移動到 save 保存&#xff0c;如下圖所示&#xff1a; 保存到 arch/arm64/c…

樹形動態規劃——樹形dp

樹形動態規劃 樹形 d p dp dp算法是一種用于解決樹相關問題的動態規劃算法。它把樹的問題分解成了子問題&#xff0c;并通過子問題的求解來構建整個問題的解。 當我們面對一棵樹的問題時&#xff0c;我們可以使用樹形 d p dp dp來解決。這種算法的基本思想是通過定義一個用于…

C語言入門 Day_5 四則運算

目錄 前言 1.四則運算 2.其他運算 3.易錯點 4.思維導圖 前言 圖為世界上第一臺通用計算機ENIAC,于1946年2月14日在美國賓夕法尼亞大學誕生。發明人是美國人莫克利&#xff08;JohnW.Mauchly&#xff09;和艾克特&#xff08;J.PresperEckert&#xff09;。 計算機的最開始…

代碼隨想錄第四十四天

代碼隨想錄第四十四天 Leetcode 518. 零錢兌換 IILeetcode 377. 組合總和 Ⅳ Leetcode 518. 零錢兌換 II 題目鏈接: 零錢兌換 II 自己的思路:想不到&#xff0c;忘記這個遞推公式了&#xff01;&#xff01;&#xff01;而且初始化也要值得注意&#xff01; 正確思路:由于這個…

js數組學習(ES6+)

文章目錄 js(ES6)數組學習1.Array.prototype.forEach(fn)2.Array.prototype.map(fn)3.Array.prototype.filter(fn)4.Array.prototype.reduce(fn)5.Array.prototype.some(fn) every6.Array.prototype.find(fn)7.Array.prototype.includes(item) js(ES6)數組學習 1.Array.protot…