import { Component, OnDestroy, OnInit, Input, Output, EventEmitter } from '@angular/core'; import { interaction, EventsConditionType, style, StyleFunction, Collection, Feature, source } from 'openlayers'; import { MapComponent } from '../map.component'; @Component({ selector: 'aol-interaction-modify', template: '' }) export class ModifyInteractionComponent implements OnInit, OnDestroy { instance: interaction.Modify; @Input() condition?: EventsConditionType; @Input() deleteCondition?: EventsConditionType; @Input() pixelTolerance?: number; @Input() style?: (style.Style | style.Style[] | StyleFunction); @Input() features: Collection; @Input() wrapX?: boolean; @Input() source?: source.Vector; @Output() onModifyEnd = new EventEmitter(); @Output() onModifyStart = new EventEmitter(); @Output() onChange = new EventEmitter(); @Output() onChangeActive = new EventEmitter(); @Output() onPropertyChange = new EventEmitter(); constructor(private map: MapComponent) { } ngOnInit() { this.instance = new interaction.Modify(this); this.instance.on('change', (event: interaction.Modify.Event) => this.onChange.emit(event)); this.instance.on('change:active', (event: interaction.Modify.Event) => this.onChangeActive.emit(event)); this.instance.on('propertychange', (event: interaction.Modify.Event) => this.onPropertyChange.emit(event)); this.instance.on('modifyend', (event: interaction.Modify.Event) => this.onModifyEnd.emit(event)); this.instance.on('modifystart', (event: interaction.Modify.Event) => this.onModifyStart.emit(event)); this.map.instance.addInteraction(this.instance); } ngOnDestroy() { this.map.instance.removeInteraction(this.instance); } }