Angular2 - 如何为一条路线设置多个解析器(一个接一个)

Angular2 - How to have multiple Resolvers (one after the other) for a route

我有一个组件,为此我编写了解析器。

这是我想在解析器中执行的操作 -

  1. 首先获取所有活跃的国家。
  2. 然后获取其中一个国家的州(我将获得所选国家的 ID)。

我在服务器上编写了 RESTful API - 获取国家的 URL 是 - http://localhost:3000/api/v1/country/search?query={%22isActive%22:true}

获取一个国家/地区的州的 URL 是 - http://localhost:3000/api/v1/country/1/state/search?query={%22isActive%22:true}

这是我为它编写解析器的方式 -

常规设置-resolver.service.ts

@Injectable()
export class GeneralSettingsResolverService implements Resolve<any> {
constructor(private service: GeneralSettingsService) { }
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<any> {
    return this.service.getAllActiveCountries().then(countries => {
        this.service.getActiveStatesOfCountry(7).then(states => {
            return {
                everything: {
                    countries: countries,
                    states: states
                }
            }
        })
    });
}

}

一般-settings.component.ts

this.route.data.subscribe((data : {everything: any}) => {
        console.log(data) //<---- Here data.everything is printed as undefined.

    })

常规设置-routing.module.ts

let generalSettingsRoutes: Routes = [
{
    path: '',
    component: GeneralSettingsComponent,
    data: {
        pageTitle: 'Organization Settings'
    },
    resolve: {
        everything: GeneralSettingsResolverService,
    }
}];

我知道我可以使用多个 resolve 来做到这一点。但是我可以使用一个接一个地获取数据来做到这一点吗?

我不太了解路由解析器,但我认为您在 general-settings-resolver.service.ts 中缺少 return 语句。大概应该是这样的:

return this.service.getActiveStatesOfCountry(7).then(...)

或者只删除该调用周围的大括号。否则你的 "everything" 对象会在一片空白中丢失 :-)