Reputation: 1261
I am trying to give my select box the selected option on page load by setting it to a variable like this
<select style="border:0;" [(ngModel)]="accountStatuses" >
option *ngFor="let s of accountStatuses" [ngValue]="s" [selected]="s === user.accountStatus">{{s}}</option>
</select>
The select box has its optioned, but on page load, none are selected.
Here is the relevant bits of typescript.
@Component({
selector: 'user-detail',
templateUrl: './user-detail.component.html',
styleUrls: ['./user-detail.component.css']
})
export class UserDetailComponent implements OnInit {
user: User;
userRoles: UserRole[] = [];
roleAmountStatusMessage = 'Show More..'
roleAmountStatus = false;
rolesSice1 = 1;
rolesSice2 = 10;
pageRequests: PageRequest[] = [];
accountStatuses = ['Archived', 'Disabled', 'Enabled', 'Locked'];
constructor(private userService: UserService, private route: ActivatedRoute, private roleService: RoleService) { }
ngOnInit(): void {
let userId = +this.route.snapshot.paramMap.get('id');
this.userService.getUser(userId).then(user => this.user = user);
this.userService.getUserLast25PageRequests(userId).then(pageRequest => this.pageRequests = pageRequest);
this.roleService.getRolesByUserId(userId).then(userRoles => this.userRoles = userRoles);
}
Upvotes: 1
Views: 70
Reputation: 15204
Look at this example:
accountStatus: AccountStatus;
accountStatuses: AccountStatus[];
<select [(ngModel)]="accountStatus" >
<option *ngFor="let s of accountStatuses" [ngValue]="s">{{s}}</option>
</select>
Let me know if you need more details
Upvotes: 2
Reputation: 657058
I think you should introduce a new field like
[(ngModel)]="selectedAccountStatuses"
instead of
[(ngModel)]="accountStatuses"
class MyComponent {
selectedAccountStatus:string;
ngOnInit() {
...
this.selectedAccountStatus = this.accountstatuses[0];
}
[(ngModel)]="selectedAccountStatuses"
and remove
[selected]="s === user.accountStatus"
Upvotes: 0