Angular 4:存储管道输出变量,以便在模板外部使用

时间:2017-11-01 14:37:24

标签: angular angular-pipe

我知道我可以在角度4中对管道输出进行别名,但这只能在模板中使用别名。

实施例

<div *ngIf="race | async as raceModel">
    <h2>{{ raceModel.name }}</h2>
    <small>{{ raceModel.date }}</small>
</div>

此处不能在ngIf之外引用raceModel。在我的情况下,我正在使用管道对集合进行排序和过滤,并希望在过滤后保留返回集合的长度,以便我可以更新我的NgbPagination。

我的代码:

<tr *ngFor="let cust of customers | filterBy: searchFilters: true | orderBy: order: reverse: true: start: end as collection">
                        <td>{{cust.id}}</td>
                    </tr>
                    </tbody>
                </table>
                <ngb-pagination *ngIf="customers"
                                (pageChange)="pageChange($event)"
                                [collectionSize]="collection.length"
                                [(page)]="page"
                                [(pageSize)]="pageSize"
                                [maxSize]="5"
                                [rotate]="true"
                                [ellipses]="true"
                                [boundaryLinks]="true">
                </ngb-pagination>

如果可以避免,我不想将管道拖到视图模型中。有关如何从管道保护变量以供以后在视图中使用的任何提示?

1 个答案:

答案 0 :(得分:0)

暂时我做了以下事情:

<ngb-pagination *ngIf="customers"
 (pageChange)="pageChange($event)"
 [collectionSize]="(customers | filterBy: searchFilters: true: true)"
 [(page)]="page"
 [(pageSize)]="pageSize"
 [maxSize]="5"
 [rotate]="true"
 [ellipses]="true"
 [boundaryLinks]="true">
</ngb-pagination>

过滤器管道的第二个真实参数返回已过滤数组的长度而不是过滤后的数组本身。 Hacky但工作正常。