2017-10-06 8 views
1

J'utilise ng2-smart-table dans mon composant.Angular 4, 'this' est indéfini lors de l'utilisation de la fonction callback 'onComponentInitFunction' de la table ng2-smart

Je suis en train d'invoquer la méthode de composant parent approveTheOrder() mais je suis incapable d'obtenir l'objet de la classe parente

est Ci-dessous l'extrait

{ 
    title: "Actions", 
    type: "custom", 
    renderComponent: ActionRenderComponent, 
    onComponentInitFunction(instance) { 
    instance.actionEmitter.subscribe(row => { 
     if(row == CONSTANT.STATUS_APPROVE){ 
     //here 'row' value is from childComponent-ActionRenderComponent,which I am able to get easily in parentComponet 
     this.approveTheOrder(instance.rowData.id); // here this is undefined, 

     } 
     if(row == CONSTANT.STATUS_REJECT){ 
     this.rejectOrder();//this is undefined 
     } 
     if(row == CONSTANT.STATUS_PENDING){ 
     this.pendingOrder(); // this is undefined 
     } 
    }); 
    }, 

    filter: false 
}; 

Est-ce que quelqu'un a une idée comment obtenir le 'ceci' dans le ci-dessous onComponentInitFunction()?

Voici l'image de l'erreur que je reçois. J'ai également essayé d'utiliser la fonction 'bind' n'a pas réussi à atteindre l'objectif, Quelqu'un peut-il me guider s'il vous plaît ici, je suis vraiment bloqué à ce stade.

EDIT 1 Notez que je suis en mesure d'obtenir l'événement de ChildComponent dans le ParentComponent, mais le problème est ici spécifique au composant NG2-table intelligente.

Pour obtenir la valeur de ChildComponent, je suis en train d'utiliser en construction fonction de rappel onComponentInitFunction (instance) du composant NG2-table intelligente

+0

@Yurzui - Oui, votre solution donnée a fonctionné pour moi. N'hésitez pas à répondre à la question afin que personne d'autre ne reste coincé avec ce problème –

+0

@ Z.Bagley - Ce problème est spécifique à ng-smart-table, je suis en mesure de récupérer la valeur de la ChildComponent dans le constructeur du ParentComponent. Mais le problème est dans la fonction onComponentInitFunction(). –

+0

Excuses, mal compris et enlevé. –

Répondre

4

La syntaxe suivante:

{ 
    onComponentInitFunction(instance) { 
    ... 

sera transformé en fonction d'expression:

{ 
    onComponentInitFunction: function(instance) { 
    ... 

Vous devez utiliser la fonction de flèche pour retenir this:

onComponentInitFunction: (instance) => {