2つのパラメータ化ルートがあります
{ path: 'mails', component: MailsComponent, canActivate: [AuthGuard] },
{ path: 'mails/:label', component: MailsComponent, canActivate: [AuthGuard] },
{ path: 'mails/folder/:folder', component: MailsComponent, canActivate: [AuthGuard] }
コンポーネントで、条件に基づいてルートパラメータを取得したいと思います。
ngOnInit(): void{
if (this.googleAuth.stateFlag) {
// labels
this.route.paramMap.subscribe(route => {
this.label$ = route.get('label');
this.googleAuth.selectedEmailLabel(this.label$);
});
}
else {
// folder
this.route.paramMap.subscribe(route => {
this.folder$ = route.get('folder');
console.log('folder handle:', this.folder$);
this.googleAuth.selectedEmailFolder(this.folder$);
});
}
}
条件はありますが、実行するたびにelseブロックします。
この問題はngOnInit
、コンポーネントの存続期間中に一度だけ呼び出され、ルート変更時にコンポーネントを複数回使用できるために発生する可能性があります。paramMapを一度サブスクライブして、次のロジックを処理してみてください。
ngOnInit(): void{
this.route.paramMap.subscribe(route => {
if (this.googleAuth.stateFlag) {
this.label$ = route.get('label');
...
} else {
this.folder$ = route.get('folder');
...
}
});
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加