Obtener ComponentRef del elemento DOM

Ya se ha respondido cómo obtener el elemento DOM de un componente Angular 2:ComponentRef.location.nativeElement (ComponentRef.location le da a ElementRef que le da acceso directo a DOM).

Pero¿Cómo hacer lo contrario, es decir, obtener la referencia a ComponentRef cuando solo tengo el objeto DOM nativo?

Estoy en el caso cuando intento arrastrar / soltar componentes de Angular 2 usando interact.js. La biblioteca utiliza funciones de devolución de llamada para notificar qué elemento se arrastra y en qué elemento estamos tratando de soltar. Unevent se proporciona un objeto, y la única información útil que encontré fue el elemento DOM (target atributo).

Ejemplo:

interact('my-component-tag').draggable({
    // ...
    onstart: function (event:any) {
        var dom = event.target; // ref to the <my-component-tag> tag
        // How to find the Angular ComponentRef object here?
    }
    // ...
}).dropzone({
    // ...
    ondragenter: function (event:any) {
        var targetDom = event.relatedTarget; // targeted <my-component-tag> tag
        // Same question here,
        // to identify where we want to insert the dragged element.
    }
    // ...
});

Plunker aquí

Puedes consultar los manejadores ensrc/Interactjs.ts. Abra la consola para ver los registros asociados y suelte un componente en otro. Tengo información sobre elementos del DOM, pero en su lugar quiero componentes angulares, digamos que acceda acount atributo.

Hallazgos e intentos:

Encontre unsolución para el complemento jquery-ui-draggable, pero este truco no funciona aquí, al menos para el objetivo donde soltar.

También haytemas sobre cómo insertar en el DOM, hablando sobre el DomAdapter, pero no he encontrado ningún método que parezca ayudar desde DOM a la referencia de componentes angulares.

Acabo de pensar en una búsqueda manual sobre mis componentes: recorrer los nodos DOM, contar para encontrar la posición y llegar al componente desde la lista de componentes en la misma posición, pero es tan feo ...

Cualquier consejo al respecto es bienvenido. ¡Gracias por leer!

Respuestas a la pregunta(2)

Su respuesta a la pregunta