В моем Angular (8) приложении нужно предварительно заполнить пару полей из сервиса (БД). вариант использования: требуется предварительно заполнить Address, Apartrment et c из БД против соответствующего PIN-кода / почтового индекса. и получить этот почтовый индекс из другой службы
Я пытался использовать Resolver
Маршрутизатор:
const routes: Routes = [
{
path: 'my-form',
component: MyFormComponent,
resolve: { managers: ManagerResolver, locationTrack: LocationTrackResolver,savedAddress: AddressResolver}
},
в моем компоненте
this.managers= this.route.snapshot.data.managers;
this.locationTrack = this.route.snapshot.data.locationTrack;
this.savedAddress = this.route.snapshot.data.savedAddress;
И адрес Resolver: здесь один подписчик для получения пин-кода на основе местоположения и внутри подписчика другой Наблюдаемый для получения данные.
@Injectable()
export class AddressResolver implements Resolve<Observable<PatientAddress>> {
savedAddress: Observable<PatientAddress>;
constructor(private addressService: AddressService, private locationMapService: LocationMapService) { }
resolve(route: ActivatedRouteSnapshot): Observable<PatientAddress> {
this.locationMapService.getLocation().subscribe(location => {
this.savedAddress = this.addressService.getLastSavedAddressByPinCode(location.postal);
});
return this.savedAddress;
}
}