В моем приложении Angular (8) нужно предварительно заполнить пару полей из службы (БД). пример использования: хотите предварительно заполнить адрес, квартиру и т. д. из БД по соответствующему пин-коду / почтовому индексу и получить этот почтовый индекс из другой службы.
Я пытался использовать 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: здесь один подписчик для получения пин-кода на основе местоположения и внутри подписчика другой Observable для получения данных.
@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;
}
}