我有一个组件,我为此编写了一个解析器。
这是我想要在解析器中做的事情 -
在服务器上我编写了RESTful API -
获取国家/地区的网址为 - http://localhost:3000/api/v1/country/search?query={%22isActive%22:true}
获取某个国家/地区的状态的网址是 -
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
}
}
})
});
}
}
general-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
来执行此操作。但是我可以使用一个单独的方法来完成这项工作,其中我一个接一个地获取数据。
答案 0 :(得分:0)
我对路线解析器了解不多,但我认为你错过了return
中的general-settings-resolver.service.ts
声明。应该是这样的:
return this.service.getActiveStatesOfCountry(7).then(...)
或者只是从该调用周围移除花括号。否则你的“所有”对象就会在虚空中丢失: - )