首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >刷新手柄角4

刷新手柄角4
EN

Stack Overflow用户
提问于 2017-09-01 21:09:26
回答 4查看 3.8K关注 0票数 4

我正在使用n2手柄与角4为一个项目。当数据发生变化时,我似乎想不出如何刷新表。我找到了这篇文章:

Refresh a handsontable

这似乎是我想要的,但我不知道如何访问这个可处理的对象。我最初的想法是使用#进行绑定,但它没有按预期工作,它只是将“未定义的”传递给函数。

component.html

代码语言:javascript
复制
 <button class="btn btn-default" (click)="add(hot)">Add</button>
 <hotTable [data]="_dataHot"
                  [colHeaders]="_columnHeadersHot"
                  [columns]="_columnsHot"
                  [options]="{contextMenu: true}"
                  #hot>
</hotTable>

component.ts

代码语言:javascript
复制
add(hot){
    //do stuff
    hot.render();
}

编辑:我可以通过执行ngIf技巧来强制呈现,但这似乎不是一个好的解决方案。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-09-03 05:24:50

我最初也遇到了同样的问题,无法理解如何访问render函数。在component.ts文件中使用下面一行对我来说非常有用。

代码语言:javascript
复制
hot.getHandsontableInstance().render();

我不确定的是为什么传递#热返回为您未定义。下面列出了我的代码片段。

component.html

代码语言:javascript
复制
<hotTable 
    [data]="data" 
    (afterChange)="afterChange($event, hot)" 
    [colHeaders]="colHeaders" 
    [columns]="columns" 
    [options]="options"
    [colWidths]="colWidths"
    #hot>
</hotTable>

component.ts

代码语言:javascript
复制
private afterChange(e: any, hot) {
    // some commands
    hot.getHandsontableInstance().render();
}
票数 5
EN

Stack Overflow用户

发布于 2017-09-01 21:19:06

您需要使用hot装饰器在代码中获取对ViewChild的引用。您可以将其存储在同名变量中。

代码语言:javascript
复制
@ViewChild('hot') hot

现在,您可以以this.hot的形式访问类中的组件实例。

票数 4
EN

Stack Overflow用户

发布于 2020-06-24 21:54:56

更新日期: 6/24/2020

对于那些仍在挣扎的人,或者我认为更正确的答案,我为大家创建了一个沙箱:https://codesandbox.io/s/patient-glade-6e0o3?file=/src/app/app.component.ts

步骤:

  1. #hot (或其他标识符)添加到您的可处理组件中,如下所示
代码语言:javascript
复制
<hot-table #hot [settings]="settings" [width]="552" [height]="600" licenseKey="non-commercial-and-evaluation"></hot-table>
  1. 请参阅组件中的可处理组件,如下所示
代码语言:javascript
复制
@ViewChild("hot", { static: false }) hot: HotTableComponent;
  1. 使用handsontable组件提供的updateHotTable方法使用新数据更新表,如下所示
代码语言:javascript
复制
// inside your component
settings: Handsontable.GridSettings = {
 data: [/* some data */]
}


updateTable(){
 // do something to update settings
  this.hot.updateHotTable(this.settings);
}

那你应该都准备好了。

我想更新这个帖子的原因是,答案中的方法不再存在于组件中。尽管hotInstance属性确实存在,但devs将其标记为私有属性。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46007985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档