我有一个未定义的数组,但下拉菜单中断了,但是如果我用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>
答案 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[] = [];