3
内怠惰なモジュールのルートのparamsを取得できません:ItemsModule
内は私が怠惰なモジュールをこのように使用するアプリケーション持っCanActivateガード
export const routes: Routes = [
{
path: '',
component: WelcomeComponent
},
{
path: 'items',
loadChildren: 'app/modules/items/items.module#ItemsModule'
}
];
export const AppRoutingModule: ModuleWithProviders
= RouterModule.forRoot(routes);
を、私は、のいずれかのガードを使用したいですサブルート:
const routes: Routes = [
{
path: ':slug', component: ItemComponent,
canActivate: [ ItemFetchGuard ]
}
];
export const coveragesRoutingModule: ModuleWithProviders =
RouterModule.forChild(routes);
このガードは、データをフェッチするslug
パラメータを取得する必要があります:
@Injectable()
export class CoverageFetchGuard implements CanActivate {
constructor(
private service: ItemService,
private route: ActivatedRouteSnapshot,
private ngRedux: NgRedux<IAppState>) {}
canActivate() {
const slug = this.route.params['slug'];
return this.service.getItem(slug)
.map(item => {
this.ngRedux.dispatch(itemSuccessfullyFetched(item));
return true;
})
.catch(error => {
this.ngRedux.dispatch(itemFetchFailed(error));
return Observable.of(false);
});
}
}
問題は、slug
パラメータがルートのスナップショット内に見つかりません(そのchildren
プロパティでも)。このデータは後で入手できますが、入手する方法が見つからないようです...
これを実装するアプローチは何ですか?ご協力いただきありがとうございます!