Resolve in Angular 2/4 is used to get data before we activate a route and component.
UserResolve service gets data from the server.
import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot} from '@angular/router';
import { UserService } from '../services/user.service';
@Injectable()
export class UserResolve implements Resolve<any> {
constructor(private service: UserService) {}
resolve(route: ActivatedRouteSnapshot) {
return this.service.getUser().then(user => user);
}
}
Note: Import the "UserResolve" in your module and use it in providers (shown below).
.......
import { UserService } from '../services/user.service';
import { UserResolve } from './user.resolve';
@NgModule({
imports: [ ... ],
declarations: [HomeComponent, AboutComponent, AboutUserComponent],
providers: [UserService, UserResolve]
})
export class UserModule { }
Use it in router module to call service (resolves data) before the component loads.
const aboutRoutes: Routes = [
{
path: '',
component: HomeComponent,
children: [
{
path: '',
component: AboutComponent,
resolve: {
user: UserResolve
}
},
{
path: 'user',
component: AboutUserComponent
}
]
}
]
Thank You...