Resolve
Interface that class can implement to be a data provider.
interface Resolve<T> {
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<T> | Promise<T> | T
}
Description
- class Backend {
- fetchTeam(id: string) {
- return 'someTeam';
- }
- }
-
- @Injectable()
- class TeamResolver implements Resolve<Team> {
- constructor(private backend: Backend) {}
-
- resolve(
- route: ActivatedRouteSnapshot,
- state: RouterStateSnapshot
- ): Observable<any>|Promise<any>|any {
- return this.backend.fetchTeam(route.params.id);
- }
- }
-
- @NgModule({
- imports: [
- RouterModule.forRoot([
- {
- path: 'team/:id',
- component: TeamComponent,
- resolve: {
- team: TeamResolver
- }
- }
- ])
- ],
- providers: [TeamResolver]
- })
- class AppModule {}
You can alternatively provide a function with the resolve
signature:
- @NgModule({
- imports: [
- RouterModule.forRoot([
- {
- path: 'team/:id',
- component: TeamComponent,
- resolve: {
- team: 'teamResolver'
- }
- }
- ])
- ],
- providers: [
- {
- provide: 'teamResolver',
- useValue: (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => 'team'
- }
- ]
- })
- class AppModule {}
Methods
Parameters
Returns
|