Angular 8 распознаватель не разрешен - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть console.log в конструкторе и ngOnInit () Resolver, но которые не зарегистрированы.

resol: {serverResolver: ServerResolverDynamicDataService}},

console.log ( «Конструктор ServerResolverDynamicDataService»);

console.log («ServerResolverDynamicDataService Resolution:»

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]}]},

Resolver:

@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']);
    }    
}

Update1: app.module.ts имеет запись этой службы в поставщиках

  providers: [ServersService,AuthGuardService,AuthService,CanDeativateGuardService,ServerResolverDynamicDataService],

Всякий раз, когда URL (http://localhost:4200/servers/1?allowToEdit=0&allowTest=2#loadPage) получает попадание, никакие журналы не поступают от решателя, но есть журналы в коде, и приложение корректно обновляется, если я редактирую любую другую часть журнала приложения. Таким образом, изменения приложения отражают единственную проблему - не вызывается распознаватель.

Update2 Согласно Angular 2+ распознаватели маршрутов не вызывают , если я удаляю родительский сервис canActivateChild, который работает. Но я не знаю, что не так. Пожалуйста, помогите мне понять.

1 Ответ

1 голос
/ 19 апреля 2020

Resolver - это сервис, а OnInit не выполняется в сервисе. На самом деле, кроме OnDestroy, в сервисе нет других хуков жизненного цикла.

В любом случае, я предполагаю, что ваш преобразователь где-то предоставлен. Если это не так, вы должны использовать аргумент в его декораторе: @Injectable({providedIn: 'root'}).

...