无法在角度5中注册Handsontable的自定义渲染器,在

时间:2018-01-03 05:50:38

标签: javascript angular handsontable

我为角度为5的Handsontable准备了一个自定义渲染器,但我找不到注册渲染器的方法。我找不到任何函数,例如' registerRenderer' .Renderer函数在下面指定

coverRenderer (instance, td, row, col, prop, value, cellProperties):any 
{
 var escaped = Handsontable.helper.stringify(value),
  button;

  button = document.createElement('BUTTON');
  button.setAttribute("name","Edit");
  //button.onclick = this.editFood(value);
  Handsontable.dom.addEvent(button, 'click',  () => {       
    this.editFood(value);
  });

  Handsontable.dom.empty(td);
  td.appendChild(button);
  return td;
}

当我加载表格时,它显示错误,如"在" coverRenderer"下找不到注册的渲染器。命名&#34 ;.我如何注册渲染器。我正在使用角5

2 个答案:

答案 0 :(得分:1)

经过数小时的尝试,我没有找到注册新渲染器的方法。所以我尝试了,当声明表的渲染器(我使用列对象)时,就像这样。

在我的HTML中我有:

<hot-table [data]="data" [colHeaders]="true" [columns]="columns"></hot-table>

在我的组件中这部分代码

columns: object[] = [
    { data: 'data.rowName', readOnly: true, renderer: this.rowRendering},
    { data: 'data.baseInitialMargin'},
]

rowRendering(instance, td, row, col, prop, value, cellProperties) {
    console.log("Rendering row ");
    Handsontable.renderers.TextRenderer.apply(this, arguments);
    if(row % 2 == 0) {
        td.style.backgroundColor = '#F5F5F5';
    } else {
        td.style.backgroundColor = 'white';
    }
}

它对我来说很好,我看到我的列的对行有不同的颜色。经过大量的亵渎!

答案 1 :(得分:0)

你应该在你的模板中写

 <hot-column (data="{{row}}", title="{{row}}",[renderer]="tableOptions.options.renderer" )></hot-column>