ada*_*ort 20 angular2-routing angular
const appRoutes: Routes = [
{ path: 'parent', component: parentComp, data: { foo: 'parent data' }, children: [
{ path: 'child1', component: childComp1, data: { bar: 'child data 1' },
{ path: 'child2', component: childComp2, data: { bar: 'child data 2' }
]}
];
Run Code Online (Sandbox Code Playgroud)
如果我导航到/parent/child2然后查看ActivatedRoutefrom parentComp,data.foo则定义,但data.bar不是.我可以访问所有孩子的数组,但我不知道哪一个被激活.
如何从父路由的组件访问激活的子路由数据?
Jul*_*ova 26
第一个孩子将为您提供数据访问权限
constructor(route: ActivatedRoute) {
route.url.subscribe(() => {
console.log(route.snapshot.firstChild.data);
});
}
Run Code Online (Sandbox Code Playgroud)
Mat*_*ira 10
使用Angular 6,我设法从父组件获取当前路由数据,使用以下代码:
我已使用Extra选项配置路由器以继承父路由数据:
@NgModule({
imports: [
RouterModule.forRoot(routes, {
initialNavigation: 'enabled',
paramsInheritanceStrategy: 'always'
}),
...
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)
然后在我的父组件中,我能够看到数据更改:
import { ActivatedRoute, ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';
import { Subscription } from 'rxjs';
import { filter, map } from 'rxjs/operators';
subs: Array<Subscription> = [];
constructor(private router: Router, private route: ActivatedRoute) {
this.subs[0] = this.router.events
.pipe(
filter(event => event instanceof NavigationEnd),
map(() => this.route.snapshot),
map(route => {
while (route.firstChild) {
route = route.firstChild;
}
return route;
})
)
.subscribe((route: ActivatedRouteSnapshot) => {
console.log(route.data);
});
}
ngOnDestroy() {
this.subs.forEach(s => s.unsubscribe());
}
Run Code Online (Sandbox Code Playgroud)
请享用!
在 Angular 8 中使用:
data: any;
constructor(route: ActivatedRoute) {
this.data = route.snapshot.firstChild.data;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19623 次 |
| 最近记录: |