使用排序和过滤管道角度5时,表格不会更新

时间:2018-01-03 10:52:56

标签: angular sorting filter pipe

我在使用角度版本5这里是我的HTML代码

 <h2 class="h5 mb-1">Results ({{companies.length}})</h2>
      <table class="table table-bordered table-hover table-striped">
        <thead>
          <tr>
            <th>Date Created <i class="fa fa-sort" aria-hidden="true" (click)="sortByDate()"></i></th>
            <th>Name <i class="fa fa-sort" aria-hidden="true" (click)="sortByName()"></i></th>
            <th></th>
          </tr>
          <tr>
            <td>
              <input type="text" [(ngModel)]="dateCreated" name="dateCreared" class="form-control">
            </td>
            <td>
              <input type="text" [(ngModel)]="nameCompany" name="name" #nameCompanyInput class="form-control">
            </td>
            <td></td>
          </tr>
        </thead>
        <tbody>
          <tr *ngFor="let company of companies | orderByDate:'desc' | filterCompany:nameCompany:dateCreated" (click)="goEditPage(company.ObjectID) ">
            <td>{{ company.ObjectCreated | date:chartDate }}</td>
            <td>{{ company.Name }}</td>
            <td class="text-center ">
              <a class="btn btn-primary ">
                <i class="fa fa-angle-double-right "></i>
              </a>
            </td>
          </tr>
        </tbody>
      </table>
      <p *ngIf="companies.length==0 ">No data !</p>

当我远程“filterCompany:nameCompany:dateCreated”时,我可以使用函数单击sortByDate和sortByName来命令该表,但如果我添加“filterCompany:nameCompany:dateCreated”,我仍然可以单击sortByDate()和sortByName但是表格没有更新。 这是我的管道代码

 transform(value: Array<any>, args?: any): any {
    debugger
    if (value == null) {
      return null;
    }

    let valueSort = [];

    if (args && args == 'desc') {
      valueSort = this.sortByDesc(value);
    }else if (args && args == 'asc') {
      valueSort = this.sortByAsc(value);
    }else {
      valueSort = this.sortByDesc(value);
    }

    return valueSort;
  }

  sortByDesc(value) {
    value.sort((a: any, b: any) => {
      let date1 = new Date(a.ObjectCreated);
      let date2 = new Date(b.ObjectCreated);
      if (date1 < date2) {
          return 1;
      }else if (date1 > date2) {
          return -1;
      }else {
          return 0;
      }
    });

    return value;
  }

  sortByAsc(value) {
    value.sort((a: any, b: any) => {
      let date1 = new Date(a.ObjectCreated);
      let date2 = new Date(b.ObjectCreated);
      if (date1 > date2) {
          return 1;
      }else if (date1 < date2) {
          return -1;
      }else {
          return 0;
      }
    });

    return value;
  }

我正在尝试调试所有功能仍然有效并且没有例外,请建议我解决方案

0 个答案:

没有答案