您可以在ActiveRouteSnapshot上使用父级:
route.parent.params['id']
我的方法是在路由中使用解析器来获取子路由等的数据。。。在此示例中:IDResolver
import { IDResolver } from '../../app.resolver';
const routes: Routes = [
{
path: ':id',
component: LayoutComponent,
children: [
{path: '', redirectTo: 'something', pathMatch: 'full'},
{path: 'something', component: SomethingComponent, resolve: {IDResolver}}
]
}
];
在你的应用程序中。分解器
import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
@Injectable()
export class IDResolver implements Resolve<any> {
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {
return Observable.of(route.parent.params['id']);
}
}
export const APP_RESOLVER_PROVIDERS = [
IDResolver
];
别忘了导入主模块
providers: [APP_RESOLVER_PROVIDERS]
祝你好运:-)
哦,是的,在你的组件中。ts您的“id”带有:
constructor(private route: ActivatedRoute) {
route.snapshot.data.IDResolver.subscribe((result: any) => console.log(result.id));
}
我之所以使用路由解析程序,是因为它允许您在导航到新路由之前获取数据。