2016-12-25 19 views
6

Angular2でルートパラメータを検証するにはどうすればよいですか?角度2のルートパラメータの検証

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

私が欲しいのは、パラメータidが有効な数値で、もしそうならば、単にコンポーネントを示しているかどうかを確認することです: は例えば、私がルートを持っています。それ以外の場合は、エラーメッセージ付きのページを表示します。

私はRoute GuardをAngular 2で見つけましたが、これは検証を行う最善の方法ではないと思います。これらのページすべてに対して個々のRoute Guardを書くことは私が望むものではないからです。

各ルートパラメータに正規表現を指定する可能性はありますか?

UPD:クエリパラメータの検証を行う方法がありますか?私はそのようなURLを持っている場合はどういう意味ですか:/search?q=blablabla&page=2pageが有効かどうかをどうやって確認できますか?ガードなしでそれを行う方法はありますか?

+0

ここからはあまり助けになることはありませんが、すばやくGoogleから寄せられました。https://github.com/angular/angular/issues/12442は正規表現を使用できないようです言及されたその不思議な 'urlMatcher'に関する情報。しかし、言ったように、私は知らない、ちょうどこのページを見つけた:) – Alex

答えて

2

ガードが行く方法です。ルートのdataセクションに検証設定を入れて、この設定に基づいてパラメータを検証するための再使用可能なガードを作成できます。

+0

ニースの答え!おかげで – Taras

+0

ですが、クエリパラメータの検証を行う方法がありますか? '/ search?q = blablabla&page = 2'パラメータ' page'が有効かどうかを確認するにはどうすればいいですか?ガードなしでそれを行う方法はありますか? – Taras

+0

ルーターはロケーションの変更を処理する責任があるため、検証を実行するのが適切な場所です。また、コンポーネント内のパラメータを検証し、パラメータが無効な場合はルータを使用して手動でリダイレクトすることもできます。 – kemsky

関連する問題