如何在ng2-ya-table中使用datasoure?

时间:2017-09-11 20:13:45

标签: grails angular-cli ngtable groovyshell

public datasource: any = (request: any): Observable<any> => { return this.service.getUsers(request); } 的文档中,数据源函数以这种方式编写:

<ng2-ya-table [options]="options" [columns]="columns" [datasource]="datasource" [paging]="paging">
</ng2-ya-table>

并像这样使用:

data = [
    {
        name: 'Patricia',
        email: 'Julianne.OConner@kory.org',
        username: 'Yes',
    },
    {
        name: 'Chelsey Dietrich',
        email: 'Lucio_Hettinger@annie.ca',
        username: 'No',
    }
]

我不想以这种方式使用这个功能,因为我有静态

public datasource: any = {
    return this.data ;
}

这是可能的还是我有义务呈现可观察的类型? 我尝试了很多使用静态数据,但徒劳无功

function

为什么这个功能不起作用?

2 个答案:

答案 0 :(得分:0)

我试过了:

public datasource: any = (request: any): Observable<any> => {
  return Observable.of(this.data);
}

但它会导致一系列错误,从:

开始
  

Ng2YaTableComponent.html:53错误TypeError:无法读取属性   未定义的“长度”

如果有人可以改进这个答案,也许我们可以找到解决方案

答案 1 :(得分:0)

尝试:

public datasource: any = (request: any): Observable<any> => {
  return Observable.of({
    recordsTotal: this.data.length,
    recordsFiltered: this.data.length,
    data: this.data
  });
}

无论如何,您需要执行分页,排序和过滤客户端(数据源是Observable以执行此操作服务器端)。 例如(仅限分页):

public datasource: any = (request: any): Observable<any> => {
  let page = (request.start / request.length) + 1;
  return Observable.of({
    recordsTotal: this.data.length,
    recordsFiltered: this.data.length,
    data: this.data.slice(request.length * (page - 1), request.length * page)
  });
}