Angular 6 Leaflet:启用地图

时间:2019-02-26 15:11:53

标签: angular typescript leaflet

我需要在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;
        })
    }
}

还有其他选择可以将地图加入服务吗?

1 个答案:

答案 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.storefromStore在做什么,但是它应该很容易适应实际情况。