0

我正在尝试使用 *ngIf 来显示和隐藏基于其构建的类的成员的元素。但是尽管能够使用其他数据成员来显示标题等,但我仍然遇到以下错误。

TypeError: Cannot read property 'hidden' of undefined

我的 html 看起来像

...
<md-list-item *ngFor="let navigation of flatNavList"
  (click)="onSelect(navigation)" *ngIf="navigation.hidden==false">
  {{navigation.title}}
</md-list-item>
...

我的 *component.ts 文件中的导航数组定义为

...
flatNavList: Navigation[];
...

和导航类看起来像

export class Navigation {
    constructor(
        public name: string,
        public title: string,
        public icon: string,
        public location: string,
        public hidden: boolean,
        public roles: string[],
        public children: Navigation[]
    ) { }
}

如果我删除 *ngIf 一切都很好。为什么我可以使用 navigation.title 显示名称,但不能使用 navigation.hidden 切换元素是否显示?

编辑 - - - - - - - - - - - - - - -

[hidden]="navigation.hidden"

但是有几篇文章说这在 Angular 2 中是不好的做法

4

1 回答 1

0

有时导航似乎是未定义的。所以首先测试它,然后检查它的隐藏属性:

*ngIf="navigation && !navigation.hidden"
于 2016-07-09T21:24:10.437 回答