每次下拉选项更改时,我都会在Angular7中调用服务。但是,当我在下拉菜单中更改选定的选项时,会出现getAllByCountryId of undefined
错误。
这是调用http服务的功能:
countryOnChange(countryId: Guid) {
this.cityService.getAllByCountryId(countryId).subscribe(
res => {
if (res.code === ResponseCode.success) {
res.dataList.map(item => {
this.cities.push({
value: item.id.toString(),
label: item.dataValue
});
});
if (this.formComponent !== undefined) {
this.formComponent.form.controls['cityId'].patchValue(this.cities);
}
}
},
err => {
this.error = true;
});
}
以下是HTML代码,在每次下拉选项更改时调用上述函数:
<ng-container *ngSwitchCase="'dropdown'" class="col-md-12">
<ng-select [ngClass]="'ng-select'" [options]="input.options" [formControlName]="input.key" [id]="input.key" (selected)="input.onChange($event.value)"></ng-select>
</ng-container>
input.onChange($event.value)
和countryOnChange
连接在后端。
以下是调用 countryOnChange 函数的方法:
const dropdown2 = new InputDropdown({
key: 'countryId',
label: '',
onChange: this.countryOnChange,
options: this.countries,
value: '',
required: true,
order: 3
});
Error http://prntscr.com/ovjxe7
我该如何解决这个问题?
答案 0 :(得分:0)
我认为需要[ngModel]:
<select [ngModel]="selectedValue" (ngModelChange)="onDropdownChange($event)"
class="form-control">
<option *ngFor="let category of categorylist" [ngValue]="category.id">
{{category.Description}}</option>
</select>
请参阅:Angular 2 How to bind selected id in Dropdownlist with model?
答案 1 :(得分:0)
getAllByCountryId of undefined
错误表示您得到this.cityService
的未定义。
在创建InputDropDown时,请检查函数与哪个this
上下文绑定。可能您需要像这样定义它:-
const dropdown2 = new InputDropdown({
key: 'countryId',
label: '',
onChange: this.countryOnChange.bind(this),
options: this.countries.bind(this),
value: '',
required: true,
order: 3
});
希望这会有所帮助。