2016-12-25 102 views
6

如何驗證Angular2中的路由參數? 例如,我有一個路線:Angular 2路由參數驗證

{path: 'artist/:id', component: ArtistInfoComponent} 

所有我想要的是檢查是否參數id是有效號碼,如果是的話,只是顯示的組件。否則,顯示包含錯誤消息的頁面。

我在Angular 2中找到了RouteGuards,但我認爲這不是驗證的最佳方式,因爲我可以爲不同的頁面設置許多不同的參數,併爲所有這些頁面編寫單獨的Route Guard並不是我想要的。

是否有可能爲每個路由參數指定正則表達式?

UPD:也許有一種方法可以對查詢參數進行驗證嗎?我的意思是如果我有這樣的網址:/search?q=blablabla&page=2如何檢查參數page是否有效?有沒有辦法做到這一點,沒有衛兵?

+0

從這裏沒有太多的幫助,但快速谷歌給了這個:https://github.com/angular/angular/issues/12442似乎是不能夠使用正則表達式現在(??),除非你找到一些關於那個神祕的'urlMatcher'的信息。但據說,我不知道,只是發現這個網頁:) – Alex

回答

2

守衛是要走的路,您可以將驗證配置放入路由的data部分,並根據此配置創建可重用的守衛以驗證參數。

+0

好的答案!謝謝 – Taras

+0

好吧,但也許有辦法對查詢參數進行驗證?我的意思是,如果我有這樣的網址:'/ search?q = blablabla&page = 2'我該如何檢查參數'page'是否有效?有沒有辦法做到這一點,沒有衛兵? – Taras

+0

路由器負責處理位置更改,因此它是進行驗證的正確位置。你也可以在組件中驗證參數,並在參數無效的情況下使用路由器手動重定向。 – kemsky