Angular 解析函数依赖于其他解析器

标签 angular angular5

在 Angular 应用程序中,甚至在我加载主页之前,我想从后台获取数据。但即使在我从后端获取数据之前,我也需要向用户发送国家名称。

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

这是我的代码:

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} }

]

此处 ResolveCountryService 必须将国家名称共享给 ResolveService 那么管理它的正确方法是什么?

更新

如果我这样做:

export const AppRoutes:Routes = [

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

]

我收到一个错误:

src/app/shared/service/resolve-country.service"' has no exported member 'ResolveCountryService'.

最佳答案

您可以使用 async and await如图this plunkr

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

然后你可以在另一个async方法中调用它并await它。 (如果需要,您可以在 try/catch 中等待它)。

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

注意:await 仅适用于 promise,但您可以在 async 方法中解析一个可观察对象,该方法将 promise 返回给 await

关于 Angular 解析函数依赖于其他解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50062673/

相关文章:

Angular订阅方法被多次调用

Angular 5 - 不执行构造函数和 ngOnInit

angular - 循环依赖错误 TransferHttpCacheModule、LocalizeRouterModule、TranslateModule

node.js - 使用服务器端通过 post 请求发送的参数

javascript - 表单的自定义 "Multi-Parameter"验证器并不总是触发

angular - Typescript - 在运行时检查类型并警告错误

javascript - Angular : Conditionally changing FormControl

javascript - 如何使用 Angular5 声明服务

如果用户已经登录,Angular 登录组件重定向

typescript - CircleCI Angular5 构建失败,因为缺少 firebase secret