角度解析函数依赖于其他解析器

3gw*_*ain 6 angular angular5

在角度应用程序中,即使在加载主页之前,我也想从支持的数据中获取数据。但即使在我从后端获取数据之前,我也需要发送用户的国家/地区名称。

所以,现在数据调用取决于第一个解析器调用。这种情况该如何处理?

这是我的代码:

import { Routes} from '@angular/router';
import { HomeComponent } from '../pages/home/home.component';
import { ResolveService } from '../shared/service/resolve.service';
import { ResolveCountryService } from '../shared/service/resolve-country.service';

export const AppRoutes:Routes = [

    {path:"", component: HomeComponent, resolve:{ country : ResolveCountryService, data:ResolveService} }

]
Run Code Online (Sandbox Code Playgroud)

这里ResolveCountryService必须分享国家名称,ResolveService那么管理这个问题的正确方法是什么?

更新

如果我这样做:

export const AppRoutes:Routes = [

    {path:"", component: HomeComponent, resolve:{ country : ResolveCountryService, resolve : {data:ResolveService } } }

]
Run Code Online (Sandbox Code Playgroud)

我收到错误如下:

src/app/shared/service/resolve-country.service"' has no exported member 'ResolveCountryService'.
Run Code Online (Sandbox Code Playgroud)

Max*_*rie 3

您可以使用asyncand ,await如此 plunkr中所示

例如,您将有一个async方法,该方法将返回具有所需结果的承诺(这将是您在执行其他操作之前要等待的第一个调用)。

然后你可以在其他async方法中调用await它。try/catch(如果你愿意,你可以在 a 中等待)。

在您的情况下,ResolveCountryService将等待检索用户所在国家/地区的方法。

请注意:await仅适用于 Promise,但您可以在将asyncPromise 返回到 的方法中解析可观察对象await