Reputation: 95
I have a select option tag to show female and male.
If I init options tag by static values, it works but if I use ngFor
it doesn't show any values:
component.ts:
export class MemberListComponent implements OnInit {
user: User = JSON.parse(localStorage.getItem("user"));
userParams: any = {};
genderList: [
{ value: "male"; display: "Males" },
{ value: "female"; display: "Females" }
];
ngOnInit() {
this.userParams.gender = this.user.gender === "female" ? "male" : "female";
}
}
and this is template:
<div class="form-group px-2">
<label for="gender">Show: </label>
<select class="form-control ml-1" style="width: 130px" id="gender" [(ngModel)]= "userParams.gender" name="gender">
<option *ngFor= "let gender of genderList" [value] = "gender.value">
{{gender.display}}
</option>
</select>
</div>
Upvotes: 2
Views: 65
Reputation: 6887
The problem is your declaration of the genderList
. Instead of initializing the variable, you only declare its type and the value is null
. Change the :
to a =
sign. Then typscript will also start to complain about your ;
inside the json object.
genderList: [
{ value: "male"; display: "Males" },
{ value: "female"; display: "Females" }
];
should be
genderList = [
{ value: "male", display: "Males" },
{ value: "female", display: "Females" }
];
or
genderList: User[] = [
{ value: "male", display: "Males" },
{ value: "female", display: "Females" }
];
Upvotes: 2
Reputation: 435
genderList: [
{ value: "male"; display: "Males" },
{ value: "female"; display: "Females" }
];
You did not initialised the gender list correctly You need to define it like
genderList:User[any] = [
{ value: "male"; display: "Males" },
{ value: "female"; display: "Females" }
];
Upvotes: 0
Reputation: 17
have you tried this code?
<div class="form-group px-2">
<label for="gender">Show: </label>
<select class="form-control ml-1" style="width: 130px" id="gender" [(ngModel)]= "userParams.gender" name="gender">
<option *ngFor= "let gender of genderList" [value] = "gender.value" [selected]="gender.value==userParams.gender">
{{gender.display}}
</option>
</select>
</div>
Upvotes: 0