2017-01-26 3 views
1
впрыском

У меня есть Угловое 2 компонент, который реализует интерфейс IDataSource как часть AG-GRIDУгловое 2 Undefined на службе

Я не могу получить впрыскивается HTTPClient Service должны быть доступны из функции DATASOURCE GetRows.

Я предполагаю, что это как-то связано с инъекцией, которую я просто не понимаю; но я не могу обернуть вокруг себя.

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

Также попытался определить его как отдельную собственность и получить то же самое.

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

ответ

2

Если вы хотите использовать'this inside the callback use() =>instead of функция() `

getRows: function (params) { 

должен быть

getRows: (params) => { 
+1

Works - чувствовать себя немного идиотом прямо сейчас. Приветствия. Я отвечу, когда смогу. – Kieran

+0

Ты здесь не один. Это, вероятно, самый часто задаваемый вопрос ;-) Рад, что он исправил его и для вас. –