mah
mah

Reputation: 95

problem to show values in select option tage

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

Answers (3)

kai
kai

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

rajanbhadauria
rajanbhadauria

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

phen pani
phen pani

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

Related Questions