CanActivateでUrlTreeを返しても正常にビューが遷移されない。
こちらのチュートリアルを見ながらRailsとAngularの基本的なユーザー認証の方法を学習していたのですがCanActivate
の動作でわからない点が出てきました。
https://hackernoon.com/angular-2-and-ruby-on-rails-user-authentication-part-4-49d550c5869a
このチュートリアルでは以下のようにCanActivate
を使い、権限のないユーザーが/profile
にアクセスした時に/
にビュー遷移するのですが、
canActivate() {
if (this.tokenService.userSignedIn()) {
return true;
} else {
this.router.navigate(['/']);
return false;
}
}
ドキュメントによるとcanActivate
がUrlTree
を返せば、現在のビュー遷移がキャンセルされ、返されたUrlTree
を元に新しくビュー遷移が行われるはずなので以下のように書き換えてみました。
https://angular.io/api/router/CanActivate
canActivate() {
if (this.tokenService.userSignedIn()) {
return true;
}
return this.router.createUrlTree(['/']);
}
ですが、Profile
コンポーネントは表示されなかったものの、ルートビューなら表示されるはずのWellcomeテキストも表示されずナビゲーションバーだけの表示になってしまいました。
なぜルートビューのUrlTree
を渡してもビュー遷移しなかったのでしょうか?
Angularのバージョンは7.2.5
を使っています。