2016-04-06 33 views
6

Ho un elemento fondamentale:dynamicaly accodare bambino da direttiva

<div> 
    I'm a basic element 
</div> 

Voglio creare una direttiva che mi permette di scrivere questo:

<div resizable-top> 
    I'm a basic element 
</div> 

e rende questo:

<div resizable-top> 
    <div> drag me to resize element </div> 
    I'm a basic element 
</div> 

Quindi, in pratica ho fatto una direttiva:

@Directive({ 
    selector: '[resizable-top]', 
    host: { 
     '(mousedown)':'onMouseDown()', 
     '(mousemove)':'onMouseMove()', 
     '(mouseover)':'onMouseOver()' 
    } 
}) 
export class ResizableDirective{ 

    constructor(private el:ElementRef){ 
    } 

    onMouseDown(){ 
     //TODO 
    } 

    onMouseMove(){ 
     //TODO 
    } 

    onMouseOver(){ 
     //TODO 
    } 
} 

il problema è che non so come creare un elemento figlio usando el e voglio che gli eventi vengano associati sull'elemento figlio, non sull'elemento reale.

Poiché ElementRef.nativeElement è di tipo any Non riesco a trovare i metodi/proprietà che è possibile utilizzare per ottenere ciò che voglio.

risposta

6

el.nativeElement restituisce un HTMLElement se il selettore contiene un - altrimenti un HtmlUnknownElement

Il modo angolare di farlo è quello di utilizzare la classe Renderer in combinazione con ElementRef comunque.

constructor(private el:ElementRef, private renderer:Renderer){ 
} 

e utilizzare il metodo che fornisce.

Ciò mantiene l'applicazione WebWorker e il rendering lato server sicuri.

+0

Renderer è davvero utile, ma la creazione di un elemento aggiunge l'ellement alla vista, esiste invece un modo per anteporre la visualizzazione? – Supamiu

+0

Prevenire in relazione a cosa? Prevedo per 'el'? Per questo è necessario qualcosa come 'el.nativeElement.parentNode.insertBefore (newChild, el.nativeElement)'. Non penso che questo possa essere fatto con il renderer. –

+0

Voglio dire che se ho '

' Voglio aggiungere il mio nuovo elemento in primo div, prima del bambino: '
Here
' invece di dopo figlio. – Supamiu

Problemi correlati