我在构造函数中有 console.log 和 Resolver 的 ngOnInit() 但没有记录。
解决:{serverResolver:ServerResolverDynamicDataService}},
console.log("ServerResolverDynamicDataService 构造函数");
console.log('ServerResolverDynamicDataService 解析:'
const appRoutes : Routes =[
{path:"",component:HomeComponent},
{path:"servers",canActivateChild:[AuthGuardService],component:ServersComponent,
children:[
{path:":id",component:ServerComponent,
resolve:{serverResolver:ServerResolverDynamicDataService}},
{path:":id/edit",component:EditServerComponent,canDeactivate:[CanDeativateGuardService]}]},
解析器:
@Injectable()
export class ServerResolverDynamicDataService implements Resolve<ServerModel>{
constructor(private serversService:ServersService){
console.log("ServerResolverDynamicDataService constructor");
}
resolve(activatedRouteSnapshot: ActivatedRouteSnapshot, routerStateSnapshot:
RouterStateSnapshot): ServerModel | Observable<ServerModel> | Promise<ServerModel> {
console.log('ServerResolverDynamicDataService resolve:'+activatedRouteSnapshot.params['id']);
return this.serversService.getServer(+activatedRouteSnapshot.params['id']);
}
}
更新 1 : app.module.ts 在提供者中有此服务的条目
providers: [ServersService,AuthGuardService,AuthService,CanDeativateGuardService,ServerResolverDynamicDataService],
每当 URL( http://localhost:4200/servers/1?allowToEdit=0&allowTest=2#loadPage
) 被命中时,解析器都没有日志,但代码中有日志,如果我编辑应用程序日志的任何其他部分,应用程序会正确刷新。所以应用程序更改反映了唯一的问题是没有调用解析器。
Update2如果我删除正在工作的父 canActivateChild服务,则不会调用 Angular 2+ 路由解析器。但是我不知道出了什么问题。请帮助我理解。