1. 程式人生 > >Angular 路由初識

Angular 路由初識

Routes:根元件注入RouterOutlet:放在app.component.html,作為路由指定顯示位置的指令Router:component中用RouterLink:template HTML中用ActivatedRoute:component.ts中獲取路由引數等問題:進入首頁點選“產品”點選“商品詳情”回到首頁點選“產品”,可以看到路由變化,但是頁面ID沒有變化**這是因為,每次回到主頁再進入詳情頁,是詳情頁每次重繪的過程,都會走init方法但是從詳情頁到詳情頁,init只走了一次,不會重繪ID,所以有以上問題。解決辦法就是引數訂閱subscribe訂閱就是,每次值有改變都會重新接收,重新繪製路由重定向

 
app-routing.modules.ts父路由template,注意寫法,是 ./ 開頭
分三步
  1. 在app template主路由插座之後定義輔助路由插座,必須有name屬性,值隨便
  2. 在app routing模組中定義路由,新增outlet屬性,對應輔助路由插座的name屬性值,定義元件顯示位置
  3. 跳轉路由時,在routerLink中,通過 outlets物件,指定輔助路由跳轉的元件,注意對應輔助路由name屬性值
可以通過以上兩種方式,指定跳轉輔助路由時主路由的跳轉:
  1. routerLink,第一個陣列元素指定主路由
  2. outlets物件新增primary屬性指定主路由
輔助路由的url:問題:跟子路由有什麼區別呢???區別:子路由:是某一元件的子元件,也就是說,依附於某元件,在某元件出現後觸發,跳轉,路由格式:                                    某路由      子路由   輔助路由
輔助路由:不依附任何元件,可以獨立其他元件存在(例如聊天模組,一個網站任何頁面都可以觸發彈出聊天功能,)
通過一些鉤子實現,即 路由守衛
程式碼:建立守衛檔案ts實現對應方法,指定守衛條件:在路由配置模組中,引入守衛ts檔案,配置相應屬性到指定元件上:注意provider注入:resolve守衛:當進到一個頁面,需要請求資料繫結頁面,這時初始狀態會有繫結位置都是空的狀態的情況,resolve就是解決這個問題,預先讀取資料,帶著讀取的資料再跟路由一起跳過來。
注意裝飾器