I am trying to rebuild a dropdown and I faced some issues. I am using the basic dropdown on my project and I need to see the whole list of options on clicking the input field. I cannot use the arrow icon from the second example. I already tried to use the following events from the documentation: onDropdownClick, onSelect, and [dropdown]="true" but they do not work, I do not know why. Could you give me some advice on how to solve this issue and get the options on click, please? Best regards.
Here is the documentation I have used
Here is the code on stackblitz
import { Component } from '@angular/core';
import { MenuItem } from 'primeng/api';
import { SelectItem } from 'primeng/api';
import { SelectItemGroup } from 'primeng/api';
import { CountryService } from './countryservice';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
providers: [CountryService]
})
export class AppComponent {
country: any;
countries: any[];
filteredCountriesSingle: any[];
filteredCountriesMultiple: any[];
brands: string[] = ['Audi', 'BMW', 'Fiat', 'Ford', 'Honda', 'Jaguar', 'Mercedes', 'Renault', 'Volvo', 'VW'];
filteredBrands: any[];
brand: string;
constructor(private countryService: CountryService) { }
filterCountrySingle(event) {
let query = event.query;
this.countryService.getCountries().then(countries => {
this.filteredCountriesSingle = this.filterCountry(query, countries);
});
}
filterCountryMultiple(event) {
let query = event.query;
this.countryService.getCountries().then(countries => {
this.filteredCountriesMultiple = this.filterCountry(query, countries);
});
}
filterCountry(query, countries: any[]): any[] {
//in a real application, make a request to a remote url with the query and return filtered results, for demo we filter at client side
let filtered: any[] = [];
for (let i = 0; i < countries.length; i++) {
let country = countries[i];
if (country.name.toLowerCase().indexOf(query.toLowerCase()) == 0) {
filtered.push(country);
}
}
return filtered;
}
filterBrands(event) {
this.filteredBrands = [];
for (let i = 0; i < this.brands.length; i++) {
let brand = this.brands[i];
if (brand.toLowerCase().indexOf(event.query.toLowerCase()) == 0) {
this.filteredBrands.push(brand);
}
}
}
}