2016-03-22 15 views
8

Böyle bir direktif var içinde bir üye işlev yönergesi erişebilir ve aramak için nasıl -Eğik 2-

@Directive({ 
    selector: 'someDirective' 
}) 
export class SomeDirective{   
    constructor() {}  
    render = function() {} 
} 

ve sonra ngAfterViewInit yılında yönergesi

import {SomeDirective} from '../../someDirective'; 
@Page({ 
    templateUrl: '....tem.html', 
    directives: [SomeDirective] 
}) 
export class SomeComponent { 
     constructor(){} 
     ngAfterViewInit(){//want to call the render function in the directive 
} 

ithal ediyorum, ben istiyorum Direktifte render fonksiyonunu çağırmak. Bu nasıl yapılır?

cevap

12

Bu eski yoldur

@Directive({ 
    selector: 'someDirective' 
}) 
export class SomeDirective{   
    constructor() {}  
    render() { 
     console.log('hi from directive'); 
    } 
} 

import {Component,ViewChild} from 'angular2/core'; 
import {SomeDirective} from '../../someDirective'; 
@Component({ 
    templateUrl: '....tem.html', 
    directives: [SomeDirective] 
}) 
export class SomeComponent { 
     @ViewChild(SomeDirective) vc:SomeDirective; 
     constructor(){} 
     ngAfterViewInit(){ 
      this.vc.render(); 
     } 
} 
Angular2 daha yeni bir sürümü için

, cevap, size söylediği gibi Bunu denedim, burada

Calling function in directive

+0

cevap için teşekkürler verilen takip ama hata alıyorum - sözdizimi hatası - @ViewChild (SomeDirective) vc: SomeDirective; satırın ':' kolonunda. İyonik 2 kullanıyorum. Her iki yolu da içe aktarmayı denedim ---> import {ViewChild} 'angular2/core' den; ve {ViewChild} 'i iyonik açısal' dan içe aktarın; –

+0

Oops! Ben iyonik çerçeve yapılamıyorum. Bu durumda size yardımcı olamam. Ama eminim ViewChild bu şekilde kullanılır. – micronyks

+0

hey kesinlikle doğru, ES6'da kod yazıyorum dışında. Bu yüzden, kodu TS'ye yazdı ve aktardı ve işler işe yaradı. Bana ES6/ES5'te nasıl yazılacağını söylerseniz harika olur. Teşekkürler. –