2017-01-26 1 views
1

J'ai une 2 composante angulaire qui met en oeuvre une IDatasource d'interface dans le cadre de AG-GRIDangulaire 2 non définie sur Injecté service

Je ne peux pas obtenir le injectais httpClient service sera disponible à partir de la fonction getRows DataSource. Je suppose que c'est quelque chose à voir avec l'injection que je ne comprends tout simplement pas; mais je ne peux pas comprendre pourquoi.

constructor(private httpClient: HttpClient) { 
    //This one works perfectly fine and httpClient is defined. 
    console.log(this.httpClient); 

    this.gridOptions = <GridOptions>{ 
     //Removed other config for brevity. 
     datasource: { 
      getRows: function (params) { 
       let data: any[] = []; 


       //this one - the httpClient is undefined. No idea why? 
       console.log(this.httpClient); 


       // this.httpClient.post('incidents/GetIncidentList', params).subscribe(response => data = response.json()); 
       let lastRow = -1; 
       params.successCallback(data, lastRow); 
      } 
     } 
    }; 
} 

a également essayé de le définir comme une propriété séparée et a obtenu exactement le même problème.

private dataSource: IDatasource = { 
    getRows: function (params) { 
     let data: any[] = []; 
     console.log(this.httpClient); 
     // this.httpClient.post('incidents/GetIncidentList', params).subscribe(response => data = response.json()); 
     let lastRow = -1; 
     params.successCallback(data, lastRow); 
    } 
} 

Répondre

2

Si vous souhaitez utiliser'this inside the callback use() => fonction instead of() `

getRows: function (params) { 

devrait être

getRows: (params) => { 
+1

Works - se sentir comme un peu idiot maintenant. À votre santé. Je marquerai comme la réponse quand je peux. – Kieran

+0

Vous n'êtes pas seul ici. C'est probablement la question la plus fréquemment posée ;-) Je suis content qu'elle l'ait corrigé pour vous aussi. –