使用服务为多个组件制定通用方法

时间:2019-04-25 07:04:02

标签: angular angular-material

我有多种方法可以对不同的表进行排序:

sortFruits(sort: Sort) {
    const direction = sort.direction === 'asc' ? 'asc' : 'desc';
    this.data.fruits= orderBy(this.data.fruits, [sort.active], [direction]);
  }

sortFamily(sort: Sort) {
    const direction = sort.direction === 'asc' ? 'asc' : 'desc';
    this.data.family= orderBy(this.data.family, [sort.active], [direction]);
  }

我尝试对服务执行通用方法:

sortTable(sort: Sort, data: any) {
    const direction = sort.direction === 'asc' ? 'asc' : 'desc';
    return orderBy(data, [sort.active], [direction]);
    // return data;
  }

并直接在视图组件上调用此服务:

 <table matSort (matSortChange)="matSort.sortTable($event, data.fruits)">

但是排序无效:-/,我做错了什么?

谢谢

1 个答案:

答案 0 :(得分:0)

好吧,我在视图中丢失了变量的重新分配:

<table matSort (matSortChange)="data.fruits = matSort.sortTable($event, data.fruits)">

并返回服务上的数据值

sortTable(sort: Sort, data: any) {
    const direction = sort.direction === 'asc' ? 'asc' : 'desc';
    data = orderBy(data, [sort.active], [direction]);
    return data;
  }

谢谢:-)