0

I have a route like this, with a resolver for a child route.

 {
        path: 'organizations/:oid',
        component: AdminOrganizationComponent,
        children: [
          {
            path: 'profile',
            component: AdminOrganizationProfileComponent,
            resolve: { organization: OrganizationResolver }
          },
          { path: '', redirectTo: 'profile', pathMatch: 'full' }
        ]
      },

The resolver looks like this

@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);
  }
}

Before I navigate to the route, I use the service to set the selected organization.

  edit(organization) {
    this.organizationResolver.setUser(organization);
    this.router.navigate(['/admin/organizations', organization.id]);
  }

So far it works just as intended, I can use snapshot.data to get the selected organization.

Now when I reload the route

/organizations/12345/profile

I want the resolver to check if there is a activeOrganization stored. If not, it is supposed to retrieve it via a http.get with the 12345 as id.

My problem is that i don't know with which tool I can retrieve the params. Normally in a component I can simple use activatedRoute.parent.params But in this case the injected activatedRoute.parent is null.

I figured that since I've provided the resolver in root, parent=null would make sense but logging out the snapshot I'm getting null in parent as well as firstChild...

Bharata
  • 13,509
  • 6
  • 36
  • 50
Han Che
  • 8,239
  • 19
  • 70
  • 116

1 Answers1

1

ActivatedRouteSnapshot Contains the information about a route associated with a component loaded in an outlet at a particular moment in time. ActivatedRouteSnapshot can also be used to traverse the router state tree.

import { Resolve, ActivatedRouteSnapshot } from '@angular/router';

  resolve(route: ActivatedRouteSnapshot) {
    let id: any = route.params['id'];
  }
Chellappan வ
  • 23,645
  • 3
  • 29
  • 60