<NME> application.component.ts
<BEF> import {Component, OnInit} from '@angular/core'
import {DialogService} from '../../../../core/services/dialog.service'
import {DragDropService} from '../../../../core/services/dragdrop.service'
import {MapOptions} from '../../../../shared/models/mmp.model'
import {FileService} from '../../../../core/services/file.service'
import {MmpService} from '../../../../core/services/mmp.service'
import {SettingsService} from '../../../../core/services/settings.service'

@Component({
    selector: 'mindmapp-application',
    templateUrl: './application.component.html',
    styleUrls: ['./application.component.scss']
})
export class ApplicationComponent implements OnInit {

    public node: any

    constructor (private dialogService: DialogService,
                 private dragDropService: DragDropService,
                 private mmpService: MmpService,
                 private settingsService: SettingsService,
                 private fileService: FileService) {
        this.node = {}
    }

    public async ngOnInit () {
        const settings = this.settingsService.getCachedSettings()

        // Create the mind map.
        this.initMap(settings.mapOptions)

        // Initialize all listeners
        this.createMapListeners()
        this.dragDropService.createDragAndDropListener()
    }

    public createMap (options: MapOptions) {

        await this.mapCacheService.init()

        this.node = this.mmpService.selectNode()

        // Initialize all listeners
        this.createMapListeners()
    }

    public createMapListeners () {
        this.mmpService.on('create').subscribe(() => {
            Object.assign(this.node, this.mmpService.selectNode())
        })

        this.mmpService.on('nodeSelect').subscribe((node) => {
            Object.assign(this.node, node)
        })

        this.mmpService.on('nodeDeselect').subscribe(() => {
            Object.assign(this.node, this.mmpService.selectNode())
        })

        this.mmpService.on('nodeUpdate').subscribe((node) => {
            Object.assign(this.node, node)
            this.mapCacheService.updateAttachedMap()
        })

        this.mmpService.on('undo').subscribe(() => {
            Object.assign(this.node, this.mmpService.selectNode())
            this.mapCacheService.updateAttachedMap()
        })

        this.mmpService.on('redo').subscribe(() => {
            Object.assign(this.node, this.mmpService.selectNode())
            this.mapCacheService.updateAttachedMap()
        })

        this.mmpService.on('nodeCreate').subscribe(() => {
            this.mapCacheService.updateAttachedMap()
        })

        this.mmpService.on('nodeRemove').subscribe(() => {
            this.mapCacheService.updateAttachedMap()
        })
    }

}

<MSG> [refactor] remove dragDrop service and create util function to observe drop events

<DFF> @@ -1,10 +1,10 @@
 import {Component, OnInit} from '@angular/core'
 import {DialogService} from '../../../../core/services/dialog.service'
-import {DragDropService} from '../../../../core/services/dragdrop.service'
 import {MapOptions} from '../../../../shared/models/mmp.model'
 import {FileService} from '../../../../core/services/file.service'
 import {MmpService} from '../../../../core/services/mmp.service'
 import {SettingsService} from '../../../../core/services/settings.service'
+import {UtilsService} from '../../../../core/services/utils.service'
 
 @Component({
     selector: 'mindmapp-application',
@@ -16,7 +16,6 @@ export class ApplicationComponent implements OnInit {
     public node: any
 
     constructor (private dialogService: DialogService,
-                 private dragDropService: DragDropService,
                  private mmpService: MmpService,
                  private settingsService: SettingsService,
                  private fileService: FileService) {
@@ -31,7 +30,14 @@ export class ApplicationComponent implements OnInit {
 
         // Initialize all listeners
         this.createMapListeners()
-        this.dragDropService.createDragAndDropListener()
+
+        this.handleImageDropObservable()
+    }
+
+    public handleImageDropObservable () {
+        UtilsService.observableDroppedImages().subscribe((image: string) => {
+            this.mmpService.updateNode('imageSrc', image)
+        })
     }
 
     public createMap (options: MapOptions) {

[refactor] remove dragDrop service and create util function to observe drop events