Angle Router распознаватель - получить параметры от родителя при перезагрузке
У меня есть такой маршрут, с определителем для дочернего маршрута.
{
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
получить выбранную организацию.
Теперь, когда я перезагрузить маршрут
/ Организации /12345/ Профиль
Я хочу, чтобы решатель проверил, есть ли activeOrganization
сохраняются. Если нет, то предполагается получить его через http.get
с 12345
как id
,
Моя проблема в том, что я не знаю, с помощью какого инструмента я могу получить параметры. Обычно в компоненте я могу просто использовать activatedRoute.parent.params
Но в этом случае вводится activatedRoute.parent
является null
,
Я понял, что так как я предоставил решатель в корне, parent=null
будет иметь смысл, но выходя из снимка я получаю null
в родительском, а также firstChild
...
1 ответ
ActivatedRouteSnapshot Содержит информацию о маршруте, связанном с компонентом, загруженным в розетку в определенный момент времени. ActivatedRouteSnapshot также можно использовать для обхода дерева состояний маршрутизатора.
import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
resolve(route: ActivatedRouteSnapshot) {
let id: any = route.params['id'];
}