我正在运行 Angular 6,我想动态地将一个图层添加到传单地图,但是如果图层是从另一个组件修改的,我无法检测到传单图层的变化。如果从执行图层更改,一切正常, map.component
但如果我从外部进行更改,则一切正常:
例子:
map.component.ts
layers: Layer[];
addPolygon () {
this.layers = [polygon([[ 43, 3 ], [ 42, 0 ], [ 44, 1 ]])]
}
map.component.html
<div class="map"
leaflet
(leafletMapReady)="onMapReady($event)"
[leafletOptions]="options"
[leafletLayers]="layers">
</div>
<div>
<button type="button" name="button" (click)="addPolygon()"></button>
</div>
现在一切正常,只要单击按钮,多边形就会出现。但我需要该按钮位于另一个组件 ( form.component.ts
) 中,因此我尝试与服务共享该addPolygon()
功能:
服务器.service.ts
@Injectable()
export class ServerService {
addPolygon: Function;
}
我修改MapComponent
并添加了用于调用服务的构造函数
map.component.ts
export class MapComponent{
layers: Layer[];
constructor(private serverService: ServerService){
this.serverService.addPolygon = this.addPolygon
};
form.component.ts
export class FormComponent implements OnInit {
constructor(private serverService: ServerService) { }
triggerMap() {
this.serverService.addPolygon()
}
}
但是,如果我绑定多边形中triggerMap()
的按钮,form.component.html
则不会将其添加到地图中。addPolygon
然而,控制台说map.component.ts
已经到达。
我什至尝试使用NgZone
,但它没有任何区别。有什么建议吗?
角 CLI:6.0.8