将默认值分配给第一个下拉元素

时间:2019-03-29 10:00:21

标签: javascript angular typescript

我的下拉菜单中有

这是下拉代码

.toUTCString()

这是我的填充方式

我向服务器发送请求并获取所有房东类型

var curdate = new Date("Fri Mar 29 2019 08:00:00 GMT+0530");

var UTCdate = curdate.toUTCString();

并在<div class="form-group"> <label>{{l("LandlordType")}}</label> <p-dropdown [options]="landlordTypes" autoWidth="false" [style]="{'width':'100%'}" name="type" [autoWidth]="true" [(ngModel)]="landlord.landlordTypeId"></p-dropdown> </div>

中调用此方法
getLandlordTypes(): void {
    this._landlordTypesService.getLandlordTypesDropdownValues().subscribe(result => {
        result.items.forEach(value => {
            this.landlordTypes.push({ label: value.name, value: value.id });
        });
        this.landlord.landlordTypeId = result.items[0].id;
    });
}

但是,当我使用此下拉列表打开模式时,我的第一个元素为ngOnInit,而不是ngOnInit(): void { this.getLandlordTypes(); } 。据我了解,我需要以某种方式推送默认值。我该怎么做?

1 个答案:

答案 0 :(得分:0)

嗯。。看起来您的绑定错误。您的下拉选项值应绑定到整个对象。

您应该替换

this.landlord.landlordTypeId = result.items[0].id;

使用

this.landlord = result.items[0];

这是getLandlordTypes()方法的外观:

getLandlordTypes(): void {
  this._landlordTypesService.getLandlordTypesDropdownValues().subscribe(result => {
    result.items.forEach(value => {
      this.landlordTypes.push({ label: value.name, value: value.id });
    });
    this.landlord = result.items[0];
  });
}

然后在HTML上,使用将2路数据绑定设置为[(ngModel)]="landlord

<div class="form-group">
  <label>{{l("LandlordType")}}</label>
  <p-dropdown [options]="landlordTypes" autoWidth="false"  [style]="{'width':'100%'}" name="type" [autoWidth]="true" [(ngModel)]="landlord"></p-dropdown>
</div>