在 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/