2017-05-24 17 views
2

ag-Grid Cell Rendering documentationを見てから、cellRenderFramework引数を使ってセルレンダラにカスタムプロパティを追加する方法はありません。たとえば、ボタンをクリックしたときに呼び出されるカスタムレンダラーへのコールバックを渡したいとします。ag-Gridセルレンダリング - カスタム小道具

class AddCellRenderer extends React.Component<ICellRendererParams, {}> { 

    /** 
    * Callback handle to pass data to on a click. 
    */ 
    public static callback = (data: MyData): void => { return; }; 

    public constructor(params: ICellRendererParams) { 
    super(params); 
    } 

    public render() { 
    let className = 'pt-button pt-intent-success pt-icon-add'; 
    let text = 'Click to add'; 
    if (this.props.data.saved) { 
     className = 'pt-button pt-intent-danger pt-icon-remove'; 
     text = 'Click to remove'; 
    } 
    return (
     <button type="button" onClick={this.onClick} className={className}>{text}</button> 
    ); 
    } 

    private onClick = (event: React.FormEvent<HTMLButtonElement>): void => { 
    AddCellRenderer.callback(this.props.data); 
    this.setState({ ...this.state }); // Make React update the component. 
    } 
} 

そして、私はそう

public render() { 
    let saveCellRenderer = AddCellRenderer; 
    saveCellRenderer.callback = this.onSelectData; 
    const columnDefs: ColDef[] = [ 
    { 
     headerName: 'Add to Available Data', 
     cellRendererFramework: AddCellRenderer, 
    }, 
    ... 
    ]; 
    ... 
    } 

あり醜いです静的パブリックメソッド以外の小道具としてこのコールバックを渡すための別の方法でなければならないとするとき、複数の動作しませんようにそれを使用して別のコンポーネントを持っていますコンポーネントがレンダラーを使用する場合、ag-Gridでこれをどうやって行うのですか?

+0

これを回避するために上位コンポーネントを使用して終了しました。 – Lucas

答えて

0

私はこれが遅いことを知っています。しかしcellRendererParamscellRendererを試してみましたか?
カスタムセルコンポーネントを使用してカスタムセルコンポーネントをカスタムプロンプトに設定できます。例:

columnDef = [ 
    ....... 
    { 
     ....... 
     cellRenderer: CustomCellComponent, 
     cellRendererParams: { 
      prop1: "this is prop1" 
     } 
    } 
]