在角度应用程序中,即使在加载主页之前,我也想从支持的数据中获取数据。但即使在我从后端获取数据之前,我也需要发送用户的国家/地区名称。
所以,现在数据调用取决于第一个解析器调用。这种情况该如何处理?
这是我的代码:
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)
您可以使用async
and ,await
如此 plunkr中所示
例如,您将有一个async
方法,该方法将返回具有所需结果的承诺(这将是您在执行其他操作之前要等待的第一个调用)。
然后你可以在其他async
方法中调用await
它。try/catch
(如果你愿意,你可以在 a 中等待)。
在您的情况下,ResolveCountryService
将等待检索用户所在国家/地区的方法。
请注意:await
仅适用于 Promise,但您可以在将async
Promise 返回到 的方法中解析可观察对象await
。