数组未定义:错误TypeError:无法读取未定义的属性“ push”

时间:2019-04-17 17:38:07

标签: angular

我有一个未定义的数组,但下拉菜单中断了,但是如果我用console.log记录该数组,则可以看到这些值。

这是我的ts密码

这会在Init上触发

rolesArr: SelectItem[];

let obj = {  1: "System Admin",  2: "Internal Account Manager",  3: "CAT Manager",
4: "HR Admin",  5: "HR Manager",  6: "HR Recruiter",  7: "Candidate",
8: "Operations administrator"},
result = Object.entries(obj).reduce((a, [label, value]) => 
a.concat({label, value}), []);
    this.rolesArr.push(...result);

这是我的HTML

<div class="ui-g-6 ui-sm-12">
  <div class="input-container">
    <label for="role">Role*</label>
    <p-dropdown [options]="rolesArr"
        formControlName="role" id="role" placeholder="Please select">
    </p-dropdown>
  </div>
</div>

2 个答案:

答案 0 :(得分:1)

您需要初始化数组,因为您只用类型声明了它。这意味着无法将数组推入,因为它尚不存在。尝试使用正确的类型将其声明为空数组。

public rolesArr: SelectItem[] = [];

答案 1 :(得分:0)

尝试添加ngIf

<div class="ui-g-6 ui-sm-12" *ngIf="rolesArr.length">
  <div class="input-container">
    <label for="role">Role*</label>
    <p-dropdown [options]="rolesArr" formControlName="role" id="role" placeholder="Please select"></p-dropdown>
  </div>
</div>

,您应该为数组设置默认值

rolesArr: SelectItem[] = [];