Teradata Covalent数据表(sortChange)输出不对表列

时间:2017-12-11 11:46:26

标签: html5 angular teradata-covalent

我正在尝试使Teradata共价数据表的所有列都可以排序。我正在使用原子表组件,因为我必须向表中添加操作按钮。据我从文档中理解,(sortChange)输出用于调用组件代码中的函数,我在其中添加排序逻辑?出于某种原因,我的排序功能并没有对列进行排序......我知道我在这里做错了吗?

更新

我看到ITdDataTableSortChangeEvent的名称属性在调用sort函数时总是为空而不是包含特定列的鬃毛...任何想法如何将该事件传递给带有列&的sort函数#39; s name property set?

my html code?

更新2

在@Chic的建议之后,我可以看到传递给sort函数的事件包含正确的数据但是列仍然没有排序...

My filter function:

filter(): void {
        let newData: IEmployee[] = this.employees;
        let excludedColumns: string[] = this.columns
            .filter((column: ITdDataTableColumn) => {
                return ((column.filter === undefined && column.hidden === true) ||
                (column.filter !== undefined && column.filter === false));
            }).map((column: ITdDataTableColumn) => {
            return column.name;
        });
    newData = this._dataTableService.filterData(newData, this.searchTerm, true, excludedColumns);
    this.filteredTotal = newData.length;
    newData = this._dataTableService.sortData(newData, this.sortBy, this.sortOrder);
    newData = this._dataTableService.pageData(newData, this.fromRow, this.currentPage * this.pageSize);
    this.filteredEmployees = newData;
  }

<table *ngIf="filteredEmployees.length > 0" td-data-table>
                <thead>
                    <tr td-data-table-column-row>
                        <th td-data-table-column [sortable]="true" [sortOrder]="'ASC'"  *ngFor="let column of columns" (sortChange)="sort($event)">
                            {{column.label}}
                        </th>
                        <th>
                            Action
                        </th>
                    </tr>
                </thead>
                <tbody>
                    <tr td-data-table-row *ngFor="let row of filteredEmployees">
                        <td td-data-table-cell *ngFor="let column of columns">
                                {{row[column.name]}}
                        </td>
                        <td>
                            <mat-icon class="fa fa-edit fa-2x" (click)="editCashier(row)" matTooltip="Edit Cashier"></mat-icon>
                            <mat-icon class="fa fa-trash fa-2x" title="Delete" (click)="deleteCashier(row)" matTooltip="Delete Cashier" aria-label="Delete"></mat-icon>
                        </td>
                    </tr>
                </tbody>
            </table>

my sort function:

sort(sortEvent: ITdDataTableSortChangeEvent): void {
      console.log("sort called");
        this.sortBy = sortEvent.name;
        console.log(sortEvent.name);
        this.filter();
    }

1 个答案:

答案 0 :(得分:1)

您需要在[name]="column.name"组件上设置td-data-table-column输入。这用于sort change event

另外请注意,每次过滤以触发更改检测时,请确保过滤器功能正在更改阵列参考(即创建新阵列)。对于版本1.0.0-rc.0,这不会自动完成,但将来会为您完成。