使用 ngFor 遍历 class 个对象的数组未显示在 angular 5
iterating over an array of class objects using ngFor not displaying in angular 5
我正在尝试为 Angular 5 中的下拉菜单遍历 class 个对象数组。下拉菜单中没有显示任何内容,浏览器控制台中也没有错误。
对象数组源自此模型:
export class NewEnglandState {
constructor (
name: string,
abbrv: string,
lat: number,
lng: number,
zoom: number,
) {}
}
在我构建数组的组件中:
export class InterfaceComponent implements OnInit {
newenglandstates = [
new NewEnglandState('Massachusetts', 'MA', 42.02889443064134, -71.65008582421876, 8 ),
new NewEnglandState( 'Connecticut', 'CT', 41.527086145800006, -72.65808142968751, 9 ),
new NewEnglandState( 'Maine', 'ME', 44.95702443907399, -68.95843543359376, 7 ),
new NewEnglandState( 'New Hampshire', 'NH', 43.95328236137632, -71.28753699609376, 8 ),
new NewEnglandState('Rhode Island', 'RI', 41.64828864411775, -71.30401648828126, 9 ),
new NewEnglandState('Vermont', 'VT', 43.901850824945996, -72.50152625390626, 8 ),
new NewEnglandState('All New England', 'ANE', 43.8992496, -71.6135105, 7 )
];
}
这就是我在组件的 HTML:
<select class="form-control" title="Filter by state." (change)="onSelect($event.target.value)">
<option *ngFor="let state of newenglandstates" value="state.abbrv">
{{ state.name }}
</option>
</select>
下拉菜单中未显示任何文字。我需要在 ngFor 函数中添加什么吗?
您的代码有 2 个问题
问题一:
<option *ngFor="let state of newenglandstates" value="state.abbrv">
{{ state.name }}
</option>
应该是
<option *ngFor="let state of newenglandstates" value="{{state.abbrv}}">
{{ state.name }}
</option>
value
用作 HTML 属性并需要一个字符串值,因此当 value="state.abbrv"
时,所有选项最终都具有字符串 state.abbrv
(不是state.abbrv
的值),因此您需要使用数据绑定语法来提供值。
问题二:
您的 class 构造函数应该是
export class NewEnglandState {
constructor (
public name: string,
public abbrv: string,
public lat: number,
public lng: number,
public zoom: number,
) {}
}
相当于
export class NewEnglandState {
public name: string;
public abbrv: string;
public lat: number;
public lng: number;
public zoom: number;
constructor(
name: string,
abbrv: string,
lat: number,
lng: number,
zoom: number,
) {
this.name = name;
this.abbrv = abbrv;
this.lat = lat;
this.lng = lng;
this.zoom = zoom;
}
}
在构造函数参数中缺少 public
关键字(或一般的任何访问说明符)使参数成为普通函数参数。
我正在尝试为 Angular 5 中的下拉菜单遍历 class 个对象数组。下拉菜单中没有显示任何内容,浏览器控制台中也没有错误。
对象数组源自此模型:
export class NewEnglandState {
constructor (
name: string,
abbrv: string,
lat: number,
lng: number,
zoom: number,
) {}
}
在我构建数组的组件中:
export class InterfaceComponent implements OnInit {
newenglandstates = [
new NewEnglandState('Massachusetts', 'MA', 42.02889443064134, -71.65008582421876, 8 ),
new NewEnglandState( 'Connecticut', 'CT', 41.527086145800006, -72.65808142968751, 9 ),
new NewEnglandState( 'Maine', 'ME', 44.95702443907399, -68.95843543359376, 7 ),
new NewEnglandState( 'New Hampshire', 'NH', 43.95328236137632, -71.28753699609376, 8 ),
new NewEnglandState('Rhode Island', 'RI', 41.64828864411775, -71.30401648828126, 9 ),
new NewEnglandState('Vermont', 'VT', 43.901850824945996, -72.50152625390626, 8 ),
new NewEnglandState('All New England', 'ANE', 43.8992496, -71.6135105, 7 )
];
}
这就是我在组件的 HTML:
<select class="form-control" title="Filter by state." (change)="onSelect($event.target.value)">
<option *ngFor="let state of newenglandstates" value="state.abbrv">
{{ state.name }}
</option>
</select>
下拉菜单中未显示任何文字。我需要在 ngFor 函数中添加什么吗?
您的代码有 2 个问题
问题一:
<option *ngFor="let state of newenglandstates" value="state.abbrv">
{{ state.name }}
</option>
应该是
<option *ngFor="let state of newenglandstates" value="{{state.abbrv}}">
{{ state.name }}
</option>
value
用作 HTML 属性并需要一个字符串值,因此当 value="state.abbrv"
时,所有选项最终都具有字符串 state.abbrv
(不是state.abbrv
的值),因此您需要使用数据绑定语法来提供值。
问题二:
您的 class 构造函数应该是
export class NewEnglandState {
constructor (
public name: string,
public abbrv: string,
public lat: number,
public lng: number,
public zoom: number,
) {}
}
相当于
export class NewEnglandState {
public name: string;
public abbrv: string;
public lat: number;
public lng: number;
public zoom: number;
constructor(
name: string,
abbrv: string,
lat: number,
lng: number,
zoom: number,
) {
this.name = name;
this.abbrv = abbrv;
this.lat = lat;
this.lng = lng;
this.zoom = zoom;
}
}
在构造函数参数中缺少 public
关键字(或一般的任何访问说明符)使参数成为普通函数参数。