我有一個組件,爲此我寫了一個解析器。Angular2 - 如何有一個路由多個Resolvers(一個接一個)
這裏就是我想在解析器做 -
- 首先獲得所有活躍的國家。
- 然後獲取其中一個國家的州(我將擁有所選國家的ID)。
在我寫的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}
以下是我有爲其編寫解析器 -
general-settings-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
s。但是,我可以用一個單一的方法來做到這一點,我可以一個接一個地獲取數據。
太近了,但迄今爲止!謝謝。 – mridula