当前位置:  开发笔记 > 编程语言 > 正文

*ngIf和*ngFor在同一元素上导致错误

如何解决《*ngIf和*ngFor在同一元素上导致错误》经验,为你挑选了6个好方法。

我在尝试使用Angular *ngFor*ngIf同一个元素时遇到了问题.

当尝试遍历集合中的集合时*ngFor,集合被视为null并因此在尝试访问模板中的属性时失败.

@Component({
  selector: 'shell',
  template: `
    

Shell

{{log(thing)}} {{thing.name}}
` }) 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); } }

我知道简单的解决方案是*ngIf向上移动一个级别但是对于像a循环列表项的情况一样ul,li如果集合为空,我最终将为空,或者我的lis包装在冗余容器元素中.

这个plnkr的例子.

请注意控制台错误:

EXCEPTION: TypeError: Cannot read property 'name' of null in [{{thing.name}} in ShellComponent@5:12]

我做错了什么或这是一个错误?



1> Günter Zöchb..:

Angular v2不支持同一元素上的多个结构指令.
作为一种解决方法,使用允许您为每个结构指令使用单独元素的元素,但不会将其标记为DOM.


  
{{log(thing)}} {{thing.name}}

(