2016-11-03 15 views
5

में अपरिभाषित मैं टाइपप्रति साथ angular2 में एजी ग्रिड कोशिश कर रहा हूँ, कुछ कारणों से मैं एजी ग्रिड API का उपयोग करने, अपरिभाषित त्रुटि हो रही पा रहा हूँ।,एजी ग्रिड gridOptions.api कोणीय 2

यहाँ है कोड ..,

import { AgRendererComponent } from 'ag-grid-ng2/main'; 
import { GridOptions, RowNode } from 'ag-grid/main'; 
import { GridOptionsWrapper } from 'ag-grid/main'; 
import { GridApi } from 'ag-grid/main'; 

public gridOptions: GridOptions; 

constructor() 
{ 
    this.gridOptions = <GridOptions>{}; 

    alert(this.gridOptions); 
    alert(this.gridOptions.api); // *** getting undefined *** 


    this.gridOptions = <GridOptions>{ 
     columnDefs: this.columnDefs(), 
     rowData: this.rowData, 
     onSelectionChanged: this.onSelectionChanged, 
     groupSelectsChildren: true, 
     suppressRowClickSelection: true, 

     rowSelection: 'multiple', 
     enableColResize: true, 
     enableSorting: true, 
     rowHeight: 45} 

}//constructor 

कृपया सलाह, धन्यवाद

onGridReady() { 
    console.log(this.gridOptions.api); // here it work 
    this.selectedRows = this.gridOptions.api.getSelectedRows(); 
    console.log(this.selectedRows); 
} 

private testClick(event): void { 
    try { 
     console.log(this.gridOptions.api); // here gives error 
     this.selectedRows = this.gridOptions.api.getSelectedRows(); 
     console.log(this.selectedRows); //getting error saying undefined 
    } 
} 
नीचे टिप्पणी में कोड के साथ अपडेट किया

उत्तर

0

यह घटक जीवन चक्रों की वजह से है। constructor में अभी तक यह प्रारंभ नहीं हुआ है। (मैं तुम्हें सौंपा gridOptions ठीक से अपने ग्रिड पर आपत्ति संभालने कर रहा हूँ।)

ngOnInit() { 
    console.log(this.gridOptions.api) 
} 

में इसका उपयोग करने का प्रयास करें प्रलेखन

से ngOnInit कोणीय पहले प्रदर्शित करता है के बाद यह निर्देश/घटक प्रारंभ डेटा-बाध्य गुण और निर्देश/घटक के इनपुट गुण सेट करता है।

जीवन चक्र here के बारे में अधिक जानकारी प्राप्त करें।

5

gridOptions एपीआई सेट किया जाएगा और ग्रिड की gridReady घटना के बाद उपयोग करने के लिए तैयार हो जाएगा।

लाइन आप इसके लिए परीक्षण कर रहे हैं पर, gridOptions सिर्फ एक खाली वस्तु है, और आप कर के बाद भी इस:

this.gridOptions = <GridOptions>{ 
    columnDefs: this.columnDefs(), 
    ...other lines 

यह अभी भी एपीआई उपलब्ध नहीं होगा - gridReady या में हुक कोणीय ngOnInit घटनाएं और आप एपीआई को सुरक्षित रूप से आमंत्रित करने में सक्षम होंगे।

+0

आप दोनों अपने उत्तर के लिए धन्यवाद, onGridReady() { console.log (this.gridOptions.api)। // यहां यह काम करता है। चयनित। पंक्ति = this.gridOptions.api.getSelectedRows(); console.log (this.selectedRows); } निजी परीक्षणक्लिक (घटना): शून्य { { console.log (this.gridOptions.api) आज़माएं; // यहां त्रुटि यह प्रदान करता है। चयन किया गया है = this.gridOptions.api.getSelectedRows(); console.log (this.selectedRows); // त्रुटि प्राप्त करना अनिर्धारित } कृपया इस दिलचस्प मुद्दे पर मेरी सहायता करें – Sankaranarayanan

+0

परीक्षण क्लिक कहां से मिलता है? क्या यह उपयोगकर्ता संचालित है? –

0

इस प्रयास करें:

export class MyComponent implements OnInit { 
    selected =() => console.log('ID: ', this.gridOptions.api.getSelectedRows()[0].id); 

    gridOptions: GridOptions = { 
    columnDefs: [ 
     {headerName: 'ID', field: 'id', width: 80}, 
     { ... } 
    ], 
    rowSelection: 'single' 
    } 

    ngOnInit() { 
    this.gridOptions.rowData = this.gridData; 
    this.gridOptions.onSelectionChanged - this.selected; 
    } 

यह मेरे लिए काम किया!

संबंधित मुद्दे