我有一个UserProfileResolver
向UserProfileComponent
. 我注意到我可以多次单击导航链接发送大量 HTTP 请求。
是否有一种标准方法可以防止在初始请求完成之前发出后续请求?
导航
<li class="nav-item">
<a [routerLink]="['/user-profile/'+userId]" class="nav-link" routerLinkActive="active">
<i class="fa fa-user" aria-hidden="true"></i>
<ng-container i18n>Edit Profile</ng-container>
</a>
</li>
路由模块
const routes: Routes = [
{
path: ':id',
component: UserProfileComponent,
resolve: {data: UserProfileResolver},
},
];
解析器
export class UserProfileResolver {
constructor(private readonly userService: UserService, private readonly facilityService: FacilityService) {
}
public resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {
return new Observable((observer) => {
forkJoin([
this.userService.getSingle(route.paramMap.get('id')),
this.facilityService.getAll(),
]).pipe(
map(([user, facilities]) => {
return {user, facilities};
}),
catchError(() => of(undefined)),
// dont resolve on error
tap(data => {
if (data !== undefined) {
observer.next(data);
} else {
observer.unsubscribe();
}
observer.complete();
}),
).subscribe();
});
}
}