J'ai du mal à essayer d'utiliser Angular *ngForet *ngIfsur le même élément.
Lorsque vous essayez de parcourir la collection dans le *ngFor, la collection est vue comme nullet échoue par conséquent lorsque vous essayez d'accéder à ses propriétés dans le modèle.
@Component({
selector: 'shell',
template: `
<h3>Shell</h3><button (click)="toggle()">Toggle!</button>
<div *ngIf="show" *ngFor="let thing of stuff">
{{log(thing)}}
<span>{{thing.name}}</span>
</div>
`
})
export class ShellComponent implements OnInit {
public stuff:any[] = [];
public show:boolean = false;
constructor() {}
ngOnInit() {
this.stuff = [
{ name: 'abc', id: 1 },
{ name: 'huo', id: 2 },
{ name: 'bar', id: 3 },
{ name: 'foo', id: 4 },
{ name: 'thing', id: 5 },
{ name: 'other', id: 6 },
]
}
toggle() {
this.show = !this.show;
}
log(thing) {
console.log(thing);
}
}
Je sais que la solution simple est de *ngIfmonter d'un niveau, mais pour des scénarios tels que le bouclage des éléments de liste dans un ul, je me retrouverais soit avec un vide lisi la collection est vide, soit avec mon lis enveloppé dans des éléments de conteneur redondants.
Exemple à ce plnkr .
Notez l'erreur de console:
EXCEPTION: TypeError: Cannot read property 'name' of null in [{{thing.name}} in ShellComponent@5:12]
Suis-je en train de faire quelque chose de mal ou est-ce un bug?