首页 > 解决方案 > TypeError:无法读取未定义的属性“进程”

问题描述

我有这样的代码问题

什么是最佳实践?谢谢

错误:TypeError:无法读取未定义的属性“进程”

我的组件.ts


  ProcessInfo: any | false;


  showSaveItems = () => {
    this.typeCategory = [];
    this.dataTypesLoop = [];

    if (this.ProcessInfo.process.data.mortgage.length) {
      for (let i = 0; i < this.ProcessInfo.process.data.mortgage.length; i++) {
        if (this.ProcessInfo.process.data.mortgage[i].mortgageHeader !== null) {
          const findItem = this.categories.find(
            obj =>
              obj.value ==
              this.ProcessInfo.process.data.mortgage[i].mortgageHeader.category
          );

        }
      }
    }

    this.dataTypes = new Set(this.dataTypesLoop);
    return new Set(this.typeCategory);
  };

我的组件.html


  <li *ngFor="let item of showSaveItems()">
       <strong>{{ item.text }}</strong>
   </li>

标签: angulartypescriptangular6frontend

解决方案


您需要先实例化您的参数才能使用它:

  ProcessInfo: any | false = false;

使用 ' : ' 你只是设置了他的类型,但他的值是 'undefined' 直到你使用 ' = ';

要使用对象的过程参数,需要验证是否存在:

if (this.ProcessInfo.hasOwnProperty('process')) {
  if (this.ProcessInfo.process.data.mortgage.length) {
      for (let i = 0; i < this.ProcessInfo.process.data.mortgage.length; i++) {
        if (this.ProcessInfo.process.data.mortgage[i].mortgageHeader !== null) {
          const findItem = this.categories.find(
            obj =>
              obj.value ==
              this.ProcessInfo.process.data.mortgage[i].mortgageHeader.category
          );

        }
      }
   }
}

推荐阅读