In meiner AngularJS App habe ich die folgenden in meinem HTML-Templates zu tun:Angular2/4 ngFor Richtlinie nicht erlaubt variable Zuordnung
<tr ng-repeat="user in filtered = (users | filter:searchTerm | orderBy:firstName)">
Dann so konnte ich die Variable "gefiltert" in meinem Controller verwenden, dass ich hatte Zugriff auf meine gefilterten Tabellenzeilenelemente.
Angular 2/4 lässt diese Zuweisung nicht zu, also wie würde ich das in Angular 2/4 tun können?
UPDATE:
Komponente:
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;
}
}
Vorlage:
<tr *ngFor="let user of users | filterBy: ['firstName', 'lastName', 'email']: searchTerm; trackBy: trackItems">
Fehlermeldung:
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}
Vielen Dank! Ein zusätzlicher Fehler, den ich bekomme. Ich kann das Element nicht in ein Array in meiner Komponente innerhalb der Funktion trackHero schieben. Wenn ich versuche, auf eine Variable zuzugreifen, die ich in meiner Komponente in trackHero definiert habe, heißt es, dass sie nicht definiert ist? –
Bitte fügen Sie den Code hinzu, um die Frage zu erklären, wenn Sie denken, dass die Antwort auf Punkt ist, also akzeptieren Sie bitte, anderen zu helfen. –
@DavidFinch stellen Sie sicher, dass das Array, das Sie drücken, ist definiert, ich bin mir nicht sicher, wie Sie auf das Array zugreifen, möglicherweise ist es etwas im Zusammenhang mit Gültigkeitsbereich der Variablen –