0

我有一个从服务调用 getSchools() 的决心

解析器.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);
    })

我的组件中的数据未定义,因为它在我的解析器获取数据之前被调用。

我该如何解决?

4

1 回答 1

2

您的 resolve 方法不会返回任何内容。所以路由器不会等待任何事情得到解决:它可能订阅或等待什么?

此外,resolve 方法需要一个ActivatedRouteSnapshot. 那就是您应该从中获取 DistrictID 的地方。

以下是解析器的外观:

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'));
  }
}
于 2019-05-05T15:23:09.993 回答