【发布时间】:2023-03-09 18:35:01
【问题描述】:
在我的 AngularJS 应用程序中,我曾经在我的 HTML 模板中执行以下操作:
<tr ng-repeat="user in filtered = (users | filter:searchTerm | orderBy:firstName)">
然后我可以在我的控制器中使用变量“filtered”,这样我就可以访问我过滤的表格行项目。
Angular 2/4 不允许此分配,那么我如何在 Angular 2/4 中执行此操作?
更新:
组件:
export class UsersComponent implements OnInit {
users = [];
totalItems = 0;
filteredUsers = [];
filteredUser: User;
constructor(private dataService: DataService) { }
ngOnInit() {
this.dataService.getUsers()
.subscribe(
(data: any) => {
this.users = data.data;
},
msg => console.error(`Error: ${msg.status} ${msg.statusText}`)
);
}
trackItems(index, item){
this.totalItems = index+1;
this.filteredUsers.push(item); // <- This does not work? Should be able to push the item to my filteredUsers array?
return item ? item.id : undefined;
}
}
模板:
<tr *ngFor="let user of users | filterBy: ['firstName', 'lastName', 'email']: searchTerm; trackBy: trackItems">
错误信息:
UsersComponent.html:49 ERROR TypeError: Cannot read property 'push' of undefined
at DefaultIterableDiffer.webpackJsonp.../../../../../src/app/pages/users/users.component.ts.UsersComponent.trackItems [as _trackByFn] (users.component.ts:108)
at DefaultIterableDiffer.webpackJsonp.../../../core/@angular/core.es5.js.DefaultIterableDiffer.check (core.es5.js:6857)
at DefaultIterableDiffer.webpackJsonp.../../../core/@angular/core.es5.js.DefaultIterableDiffer.diff (core.es5.js:6830)
at NgForOf.webpackJsonp.../../../common/@angular/common.es5.js.NgForOf.ngDoCheck (common.es5.js:1669)
at checkAndUpdateDirectiveInline (core.es5.js:10837)
at checkAndUpdateNodeInline (core.es5.js:12330)
at checkAndUpdateNode (core.es5.js:12269)
at debugCheckAndUpdateNode (core.es5.js:13130)
at debugCheckDirectivesFn (core.es5.js:13071)
at Object.View_UsersComponent_0._co [as updateDirectives] (UsersComponent.html:58)
UsersComponent.html:49 ERROR CONTEXT DebugContext_ {view: Object, nodeIndex: 97, nodeDef: Object, elDef: Object, elView: Object}
【问题讨论】: