2016-10-03 13 views
-1

を私持っているこれらのコードはエラーガット:プロパティ 'gridOptions' のタイプに存在しません 'HTMLInputElementの'

table.component.ts:

cb.addEventListener('change', function(e) { 
    if (e[0].checked) { 
    this.gridOptions.api.selectAll(); 
    } else { 
    this.gridOptions.api.deselectAll(); 
    } 
}); 

export class TableComponent { 
    private gridOptions:GridOptions; 

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

    private headerCellRendererFunc(e){ 
    console.log(e.value); 
    if (e.value !== 'checkbox') { 
     return e.value; 
    } 

    var cb = document.createElement('input'); 
    cb.setAttribute('type', 'checkbox'); 
    var eHeader = document.createElement('label'); 
    eHeader.appendChild(cb); 
    cb.addEventListener('change', function(e) { 
     if (e[0].checked) { 
     this.gridOptions.api.selectAll(); 
     } else { 
     this.gridOptions.api.deselectAll(); 
     } 
    }); 

    return eHeader; 
    } 
} 

エラーが上であります

this.gridOptionsは認識されません。 "this"スコープがaddEventListenerにあるようです。

TableComponentクラスのgridOptionsをどのように参照しますか?

答えて

0

は、周囲のthisを維持するために、矢印の機能を使用します。

cb.addEventListener('change', e => { 
    if (e[0].checked) { 
    this.gridOptions.api.selectAll(); 
    } else { 
    this.gridOptions.api.deselectAll(); 
    } 
}); 
+0

私はあなたのソリューションを使用していました。コンパイルエラーはなくなりますが、実行時には発生します。 Uncaught TypeError:未定義の 'gridOptions'プロパティを読み取ることができません。 「これは」未定義になったようです。 – kimondoe

関連する問題