我有一条这样的路线,带有一个子路线的解析器。
{
path: 'organizations/:oid',
component: AdminOrganizationComponent,
children: [
{
path: 'profile',
component: AdminOrganizationProfileComponent,
resolve: { organization: OrganizationResolver }
},
{ path: '', redirectTo: 'profile', pathMatch: 'full' }
]
},
解析器看起来像这样
@Injectable()
export class OrganizationResolver implements Resolve<Observable<Organization>> {
private activeOrganization: Organization;
constructor(private route:ActivatedRoute) {}
setUser(organization: Organization) {
this.activeOrganization = organization;
}
resolve() {
return of(this.activeOrganization);
}
}
在导航至路线之前,我先使用该服务来设置所选的组织。
edit(organization) {
this.organizationResolver.setUser(organization);
this.router.navigate(['/admin/organizations', organization.id]);
}
到目前为止,它已按预期工作,我可以使用snapshot.data
来获取选定的组织。
现在我重新加载路线
/ organisations / 12345 /个人资料
我希望解析器检查是否存储了activeOrganization
。如果不是,则应该通过http.get
为12345
的{{1}}来检索它。
我的问题是我不知道可以使用哪种工具来检索参数。通常,在组件中,我可以简单地使用id
但是在这种情况下,注入的activatedRoute.parent.params
是activatedRoute.parent
。
我认为,由于我已经在根目录中提供了解析器,所以null
是有意义的,但是注销快照后,我在父级和parent=null
中都得到了null
。
答案 0 :(得分:1)
ActivatedRouteSnapshot包含有关路线的信息 与在特定时刻加载到插座中的组件相关联 及时。 ActivatedRouteSnapshot也可以用于遍历 路由器状态树。
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
resolve(route: ActivatedRouteSnapshot) {
let id: any = route.params['id'];
}