Javascript Angular4-获取;“未定义”;而不是下拉选择值

Javascript Angular4-获取;“未定义”;而不是下拉选择值,javascript,angular,Javascript,Angular,首先,我应该说,我通过了所有的回答,张贴了类似的问题,但他们没有为我工作!这真的很奇怪,因为代码看起来还行,但它总是给我未定义的变更事件 我试过这个: <select name="countries" id="countries" [(ngModel)]="selectedCountry" (change)="onCountryChange()"> <option *ngFor="let x of countrie

首先,我应该说,我通过了所有的回答,张贴了类似的问题,但他们没有为我工作!这真的很奇怪,因为代码看起来还行,但它总是给我未定义的变更事件

我试过这个:

<select name="countries" id="countries" [(ngModel)]="selectedCountry" (change)="onCountryChange()">                            
    <option *ngFor="let x of countries" [ngValue]="x">{{x.CouName}}</option>
</select>
<select name="countries" id="countries" (change)="onCountryChange($event.target.value)">                            
    <option *ngFor="let x of countries" [ngValue]="x">{{x.CouName}}</option>
</select>
我也试过这个:

<select name="countries" id="countries" [(ngModel)]="selectedCountry" (change)="onCountryChange()">                            
    <option *ngFor="let x of countries" [ngValue]="x">{{x.CouName}}</option>
</select>
<select name="countries" id="countries" (change)="onCountryChange($event.target.value)">                            
    <option *ngFor="let x of countries" [ngValue]="x">{{x.CouName}}</option>
</select>
使用

而不是

(change)="onCountryChange()"
(更改)
在更新
[(ngModel)]=“…”绑定之前激发。

使用

而不是

(change)="onCountryChange()"

(更改)
是在更新
[(ngModel)]=“…”
绑定之前触发的。

这是已知的角度绑定问题

<select name="countries" id="countries" [(ngModel)]="selectedCountry" (ngModelChange)="onCountryChange(selectedObj)">                            
    <option *ngFor="let x of countries" [ngValue]="x">{{x.CouName}}</option>
</select>
您应该从
(更改)
更改为
(ngModelChange)

<select name="countries" id="countries" [(ngModel)]="selectedCountry" (ngModelChange)="onCountryChange(selectedObj)">                            
    <option *ngFor="let x of countries" [ngValue]="x">{{x.CouName}}</option>
</select>

{{x.coname}}

这是一个已知的角度问题

<select name="countries" id="countries" [(ngModel)]="selectedCountry" (ngModelChange)="onCountryChange(selectedObj)">                            
    <option *ngFor="let x of countries" [ngValue]="x">{{x.CouName}}</option>
</select>

<select name="countries" id="countries" [(ngModel)]="selectedCountry" (ngModelChange)="onCountryChange(selectedObj)">                            
    <option *ngFor="let x of countries" [ngValue]="x">{{x.CouName}}</option>
</select>
您应该从
(更改)
更改为
(ngModelChange)

<select name="countries" id="countries" [(ngModel)]="selectedCountry" (ngModelChange)="onCountryChange(selectedObj)">                            
    <option *ngFor="let x of countries" [ngValue]="x">{{x.CouName}}</option>
</select>

{{x.coname}}

我刚刚按照您的建议使用了ngModelChange,但仍然没有定义!看不到代码就很难说。理想情况下,您可以使用或Plunker提供复制。我添加了
$event
参数。它真的很奇怪!我复制了stackblitz,它工作得很好,代码相同!但是在我的项目中,我没有定义!甚至$event参数也未定义!有趣。一项观察
selectedCountry
应该是对象(国家)而不是数组。否则我不知道。我更改了selectedCountry:any[];至所选国家/地区:编号;将ngValue改为x.CouId,这是一个数字,现在我得到了这个值,谢谢你的回答。我只是按照你的建议使用了ngModelChange,但仍然没有定义!看不到代码就很难说。理想情况下,您可以使用或Plunker提供复制。我添加了
$event
参数。它真的很奇怪!我复制了stackblitz,它工作得很好,代码相同!但是在我的项目中,我没有定义!甚至$event参数也未定义!有趣。一项观察
selectedCountry
应该是对象(国家)而不是数组。否则我不知道。我更改了selectedCountry:any[];至所选国家/地区:编号;把ngValue改为x.CouId,这是一个数字,现在我得到了这个值,谢谢你的回答。
<select name="countries" id="countries" [(ngModel)]="selectedCountry" (ngModelChange)="onCountryChange(selectedObj)">                            
    <option *ngFor="let x of countries" [ngValue]="x">{{x.CouName}}</option>
</select>