无法读取角度中未定义的属性“名称”

时间:2018-06-05 07:09:10

标签: angular typescript

在我的角度应用程序中,我收到此错误

“无法读取未定义的属性'name'

enter image description here

我无法在我的代码中找到问题。 我使用名字的唯一地方是选择

以下是第24行的选择组件的HTML

<section *ngIf="setPlainHeader" class="p-l-xxl p-r-xxl p-b-md category bg-white-only box-shadow">
  <div class="form-group nav navbar-nav navbar-btn m-t-xs m-b-xs">
    <label class="col-sm-4 control-label  p-t-xs m-t-xs">Category:</label>
    <div class="col-sm-8 p-t-xs">
      <select
        *ngIf="Categories"
        (change)="categoryChange()"
        name="category"
        [(ngModel)]="selectedCategory"
        class="form-control">
        <option
          *ngFor="let item of Categories | async "
          [value]="item.categoryId" label="">
          {{item?.name}}
        </option>
      </select>
    </div>
  </div>
</section>

以下是ts

中的代码
selectedCategory: any = '-1';

ngOnInit() {
  this.Categories=this.commonServ.getCategoryData()
}

categoryChange() {
  this.commonServ.setSelectedCategory(this.selectedCategory); 
}

类别加载但在控制台中我不断收到此错误,导致渲染中出现其他一些问题。

编辑:我试图缩小问题的范围 使用 setPlainHeader 在某些页面上可以看到标题中的部分。因此,当元素(部分)被隐藏/可见时,我会收到此错误。

任何人都可以指导我到底需要做什么。

由于

2 个答案:

答案 0 :(得分:0)

尝试使用安全导航?运算符,如下所示 -

{{item?.name}}

答案 1 :(得分:-1)

问题出在* ngIf =&#34; setPlainHeader&#34;

所以我更改了我的代码并添加了一个超时,将值分配给setPlainHeader

this.abcService.getHeaderStatus().subscribe(
        data => {
          setTimeout(function () {

            self.setPlainHeader = data;
          }, 100);


        });   

这很有效,最后错误消失了。

由于