if (idParam) {
this.showSearchForm = false;
this.id = idParam;
- this.providerRecord.fetch(this.id);
if (!tabTypeParam) {
this.activeTab = this.defaultTabType;
this.router.navigate(['/staff', 'acq', 'provider', this.id, this.activeTab]);
--- /dev/null
+import {Injectable} from '@angular/core';
+import {Router, Resolve, RouterStateSnapshot,
+ ActivatedRouteSnapshot} from '@angular/router';
+import {ProviderRecordService} from './provider-record.service';
+
+@Injectable()
+export class ProviderResolver implements Resolve<Promise<any[]>> {
+
+ savedId: number = null;
+
+ constructor(
+ private router: Router,
+ private providerRecord: ProviderRecordService,
+ ) {}
+
+ resolve(
+ route: ActivatedRouteSnapshot,
+ state: RouterStateSnapshot): Promise<any[]> {
+
+ console.debug('ProviderResolver:resolve()');
+
+ const id = Number(route.paramMap.get('id'));
+
+ if (this.savedId !== null && this.savedId === id) {
+ // don't refetch
+ return Promise.all([
+ Promise.resolve(),
+ ]);
+ } else {
+ this.savedId = id;
+ return Promise.all([
+ this.providerRecord.fetch(id),
+ ]);
+ }
+ }
+
+}
+
import {NgModule} from '@angular/core';
import {RouterModule, Routes} from '@angular/router';
import {AcqProviderComponent} from './acq-provider.component';
+import {ProviderResolver} from './resolver.service';
const routes: Routes = [
{ path: '',
},
{ path: ':id',
component: AcqProviderComponent,
+ resolve: { providerResolver : ProviderResolver },
runGuardsAndResolvers: 'always'
},
{ path: ':id/:tab',
component: AcqProviderComponent,
+ resolve: { providerResolver : ProviderResolver },
runGuardsAndResolvers: 'always'
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
- providers: []
+ providers: [ProviderResolver]
})
export class AcqProviderRoutingModule {}