ngOnInit вызывает до того, как данные решателя будут готовы - PullRequest
0 голосов
/ 05 мая 2019

У меня есть решение, которое вызывает getSchools () из службы

resolver.ts

export abstract class APIResolverService implements Resolve<any> {
          constructor(readonly dropdownService:DropDownOptionsService,readonly route:ActivatedRoute) { }
          abstract resolve();
        }


export class APISchoolsresolve extends APIResolverService{

      resolve(){
        this.route.queryParams.subscribe(params => {
          let district = params['district'];
          return this.dropdownService.getSchools(district);   
        })
      }

Мой сервис

async getSchools(districtID:number){
    return await this.http.get<ISchool[]>(`api/GetSchools/` + districtID).toPromise();
  }

Мой компонент

this.activatedRoute.data.subscribe((data) =>{

      console.log(data);
    })

мои данные в компоненте не определены, так как он вызывается до того, как мой распознаватель получит данные.

Как мне это исправить?

1 Ответ

2 голосов
/ 05 мая 2019

Ваш метод разрешения ничего не возвращает. Таким образом, маршрутизатор не ждет, когда что-то решится: на что он может подписаться или ожидать?

Кроме того, метод разрешения занимает ActivatedRouteSnapshot. Вот откуда вы должны взять округID.

Вот как должен выглядеть распознаватель:

export class APISchoolsresolve implements Resolve<Array<ISchool>> {
  constructor(private dropdownService: DropdownService) { }

  resolve(route: ActivatedRouteSnapshot): Promise<Array<ISchool>> {
    return this.dropdownService.getSchools(+route.paramMap.get('district'));
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...