我需要在Angular 6应用程序中获取地图到我的服务中。目前,我在服务中调用init函数时通过参数获取它,并在从存储中获取数据后通过组件的Subject提供它。但是有时候我会得到undefined
而不是一张地图。
我的代码示例:
page.component.ts
export class PageComponent implements OnInit {
map$ = new Subject<Map>();
ngOnInit() {
this.store.pipe(
select(fromStore.getData)
)
.subscribe(data => {
this.mapService.doSomething(this.map$);
})
}
mapReady(map: Map) {
this.map$.next(map);
}
}
map.service.ts
export class MapService {
map: Map;
subsription$: Subscription;
doSomething(map$: Observable<Map>) {
this.subsription$ = map$.subscribe(data => {
this.map = data;
})
}
}
还有其他选择可以将地图加入服务吗?
答案 0 :(得分:0)
您是否有任何原因不能直接访问地图?似乎您可能不需要了一些额外的间接层。像这样:
map.service.ts:
export class MapService {
map: Map = new Map();
doSomething(map: Map) {
this.map = map;
}
}
page.component.ts:
export class PageComponent implements OnInit {
ngOnInit() {
this.store.pipe(
select(fromStore.getData)
)
.subscribe(data => {
this.mapService.doSomething(data);
})
}
mapReady(map: Map) {
this.mapService.doSomething(map);
}
}
确切的类型可能不太正确,因为我不确定this.store
和fromStore
在做什么,但是它应该很容易适应实际情况。