Das Array, das in der ngfor-Schleife verwendet wird, wenn es aktualisiert wird, wie erhalten Sie Angular2 diesen Ausdruck erneut auszuführen? Momentan gibt es nichts aus, weil es am Anfang mit einem leeren Array läuft - einmal aktualisiert (das Array wurde verändert) wird der ngfor Ausdruck nicht erneut ausgeführt - was die gewünschte Funktionalität ist. Wie wird das gemacht?Angular2 NgFor Array in Ausdruck binden
Zum Beispiel in der Komponente HTML;
<option *ngFor="let user of users" [value]="user.id">{{user.name}}</option>
In der Komponente TS haben wir eine Eigenschaft deklariert;
users: IUser[] = [];
In ngOnInit haben wir einen Aufruf an einen TS-Dienst, der uns die Benutzerdaten zurückgibt;
this.userDataService.getUsers().subscribe(data => {
this.users = data;
});
Aktualisierter Codebeispiel;
@Component({
selector: 'app-manage-user',
templateUrl: './user-form.component.html',
providers: [UsersDataService]
})
export class UserFormComponent implements OnInit {
constructor(private userDataService: UsersDataService) {
}
users: IUser[] = [];
ngOnInit() {
this.userDataService.getUsers().subscribe(user => {
this.users = user;
});
}
}
Was meinst du mit "aktualisiert"? Wenn Sie Ihr Array "updaten", warum rufen Sie nicht die Methode 'this.userDataService.getUsers ....' auf? – Alex
Wir können die Funktion getUsers nicht aufrufen und der Benutzereigenschaft direkt zuweisen, weil getUsers eine Observable zurückgibt. – Jjj
'* ngFor' überprüft das Array bei jeder Änderungserkennung auf Änderungen und aktualisiert das DOM entsprechend. Verwenden Sie genau den obigen "ngOnInit" -Code oder ist er in Ihrem echten Code komplexer? –