функция углового разрешения зависит от другого резольвера - PullRequest
0 голосов
/ 27 апреля 2018

В угловом приложении, даже до загрузки домашней страницы, я хотел бы получить данные из резервной копии. но даже до того, как я получу данные из бэкэнда, мне нужно отправить название страны, с которой пользователь.

Итак, теперь вызов данных зависит от первого вызова распознавателя. В этом случае как обращаться?

вот мой код:

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, так каков правильный подход для управления этим?

UPDATE

Если я так и сделаю:

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'.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Вы должны использовать flatMap

export class YourDataResolver implements Resolve<object> {
     constructor(private dataService: DataService, private countryService: CountryService) { }

      resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<YourDataType> {

           return this.countryService.getCountry().flatMap( country=> 
               return this.dataService.findByCountry(country)
          ));
       }
}
0 голосов
/ 27 апреля 2018

Вы можете использовать async и await, как показано в this plunkr

Например, у вас будет метод async, который вернет обещание с желаемым результатом (это будет первый вызов, который вы хотите подождать, прежде чем делать что-либо еще).

Затем вы можете вызвать его с помощью другого async метода и await. (Вы можете ждать его в try/catch, если хотите).

В вашем случае ResolveCountryService будет ожидать метода, который извлекает страну пользователя.

Будьте осторожны: await работает только с обещаниями, но вы можете разрешить наблюдаемое в методе async, который возвращает обещание await.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...