2016-03-22 3 views
8

ho una direttiva come questa -angolare 2 - come accedere direttiva e chiamare una funzione membro in esso

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

e poi sto importando il direttiva

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

In ngAfterViewInit, voglio chiamare la funzione di rendering nella direttiva. Come fare questo?

risposta

12

Questo è il modo vecchio,

@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(); 
     } 
} 

per la versione più recente di Angular2, seguire risposta qui dato

Calling function in directive

+0

Grazie per la risposta, ho provato questo come hai detto, ma sto ricevendo errore - errore di sintassi - @ViewChild (SomeDirective) vc: SomeDirective; ai due punti ':' della linea. Sto usando Ionic 2. Ho provato ad importare entrambi i modi ---> import {ViewChild} da 'angular2/core'; e importa {ViewChild} da 'ionico-angolare'; –

+0

Oops! Non sono un frammento ionico. quindi non posso aiutarti in questo caso. Ma sono sicuro che questo è il modo in cui ViewChild è usato. – micronyks

+0

hey hai assolutamente ragione, tranne che sto scrivendo codice in ES6. Quindi, ha scritto il codice in TS e lo ha traspulato e le cose hanno funzionato. Sarebbe bello se tu potessi dirmi come scrivere lo stesso in ES6/ES5. Grazie. –

Problemi correlati