2016-12-23 24 views
10

Dinamik olarak ( numaralı enjeksiyonu) ana bilgisayara yönlendirmeyi nasıl ekleyebilirim?Dinamik olarak bir yönerge nasıl eklenir?

Benim bir myTooltip yönergem var ve onun barındırıcısına mdTooltip yönergesi eklemek istiyorum. ElementRef.nativeElement'u denedim, ancak mdTooltip yönergesini oluşturmuyor.

mytooltip.directive.ts:

<span my-tooltip="tooltip hint">Click here</span> 

sonuç html yukarıdaki değiştirmek olmaz ama MouseEnter üzerinde it would:

@Directive({ 
    selector: '[my-tooltip]', 
    host: { 
    '(mouseenter)': 'show()', 
    '(mouseleave)': 'hide()', 
    } 
}) 
export class myTooltip { 
    @Input('my-tooltip') message; 

    constructor() { } 

    show() { 
    /* TODO: How to add md-tooltip directive to elementref (host)? */ 
    } 

    hide() { 
    /* TODO: remove md-tooltip directive from elementref (host) */ 
    } 
} 

konak derken myTooltip yönergesi vardır elemanı demek span'da md-tooltip yönergesi var.

BTW, doğrudan md-tooltip değil bir sarıcı kullanıyorum nedeni, daha sonra gecikme gizleme gecikme ve malzeme araç ipucu davranışını başka yollarla da özelleştirmek istiyorum.

Düzenleme Görünüşe ekleyerek direktifler dinamik şu anda desteklenmiyor :(Bu soru hâlâ diye burada olmak

biz açısal içinde talep ediyorlar bir özelliktir
+0

Eğer 'denediniz yapıcı (özel tt: myTooltip) {con sole.log (tt); } '? Bu işe yaramazsa emin değilim. Aslında "ana bilgisayar" nedir? '' bir bileşene benzemiyor. –

+0

Kurucuda bir sağlayıcı talep ettiğinizde "enjekte etme" den bahsediyorsunuz, ancak bu durumda bunu kastetmiyorum. Burada enjekte ederek kastettiğim, bu durumda zaten işlenmiş bir dom elemanına, bir açıklığa bir yönerge koyma imkânına sahip olmaktır. Bunu html olarak yaparsınız Buraya tıklayın ', ama şimdi bunu yapmanın programlı bir yolunu arıyorum. – RichieRock

+0

Bu, adlandırılmış veya enjekte ile ilgili değil. Yönergelerin dinamik olarak eklenmesi şu anda desteklenmiyor, yalnızca bileşenler dinamik olarak eklenebilir. –

cevap

9

... okumaya bilmediği takım güncellemeler gerektiğini düşünüyorum Bu: https://github.com/angular/angular/issues/8785

bunu yapmak için hızlı ve kirli yolu kullanmaktır:

Component.ts

@HostBinding('attr.myHilite') myHilite = new myHilite();

veya parametreleri varsa ...

@HostBinding('attr.myHilite') myHilite = new myHilite(this.elementRef);

senin direktifi yaşam döngüsü kanca birinde, el ebeveyn de direktifin yaşam döngüsü kanca yöntemi çağırmak için gereken kodu çalıştırmak gerekiyorsa

böyle bileşenin yaşam döngüsü kanca yöntemleri ... Component.ts

ngOnInit(){ 
    this.myHilite.ngOnInit(); 
} 
+1

Teşekkürler! Şu an sahip olduğumuz en iyi cevap bu. Ayrıca bir başkasının da benzer bir soru sorduğunu fark ettim: http://stackoverflow.com/questions/37148080/use-angular2-directive-in-host-of-another-directive – RichieRock

İlgili konular