app.router.ts
import { NgModule ,ModuleWithProviders } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { dataService } from './service/dataService';
const router: Routes = [
{ path: 'DataService, redirectTo: '/dashboard', pathMatch: 'full' },
{
path: 'detail/:id',
component: HeroDetailComponent,
resolve: {
data: dataService
},
}
];
export const routes: ModuleWithProviders = RouterModule.forRoot(router);
app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule , APP_INITIALIZER } from '@angular/core';
import {routes} from './app.router';
import { dataService } from './service/dataService';
@NgModule({
declarations: [
your component here
],
imports: [
routes,
],
providers: [
dataService
]
})
export class AppModule { }
dataService.ts
import { Injectable } from '@angular/core';
import { Router, Resolve, ActivatedRouteSnapshot} from '@angular/router';
@Injectable()
export class dataService implements Resolve {
constructor(private heroService: HeroService, private router: Router) { }
resolve(route: ActivatedRouteSnapshot): Promise | boolean {
let id = route.params['id'];
let result = this.check_id(id);
if ( result ) {
return result ;
} else { // id not found
this.router.navigate(['/dashboard']);
return false;
}
}
check_id(id){
// check somthing return somthing or false
return true;
}
}