I use bootstrap-selectpicker in my project, when I try to put the data dynamically the dropdown doesn't work. I think selectpicker() gets called too soon. I want it to be called after I fetch the data.
export class MyComponent implements AfterViewInit {
accounts = Observer<Account[]>;
// Account service is just a http service returning Observer with accounts.
constructor(private accountService : AccountService) {
this.accounts = this.accountService.getAccounts();
}
ngAfterViewInit() {
$('.selectpicker').selectpicker();
}
}
Template:
<select class="selectpicker" multiple>
<option *ngFor="let account of accounts | async" >{{account.username}}</option>
</select>
It only works When I use predefined list like this:
<select class="selectpicker" multiple>
<option>One</option>
<option>two</option>
<option>three</option>
</select>
This is my AccountService:
@Injectable()
export class AccountService {
constructor(private http: Http) { }
// TODO: Error handling
getAccounts() : Observable<Account[]> {
return this.http.get("/api/accounts").map(response => response.json());
}
}