* ngIf и * ngFor для одного и того же элемента, вызывающего ошибку

У меня проблема с попыткой использовать Angular's*ngFor а также*ngIf на том же элементе.

При попытке перебрать коллекцию в*ngForколлекция рассматривается какnull и, следовательно, не удается при попытке доступа к его свойствам в шаблоне.

@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);
  }

}

Я знаю, что простое решение состоит в том, чтобы переместить*ngIf до уровня, но для сценариев, таких как зацикливание элементов списка вulЯ бы в конечном итоге либо пустымli если коллекция пуста или мояlis обернуты в избыточные элементы контейнера.

Пример на этомplnkr.

Обратите внимание на ошибку консоли:

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

Я что-то не так делаю или это ошибка?

Ответы на вопрос(13)

Ваш ответ на вопрос