NativeScript Angular ListPicker, который ведет себя как `<select>`

По умолчанию ListPicker занимает тонну экрана. Есть ли способ заставить его вести себя как метафора для HTML <select> когда показывается на мобильном?

Я использовал этот плагин реагировать нативно, и это именно та метафора, которую я хочу, но для NativeScript.

Это легко сделать с помощью NativeScript? Я хочу использовать метафоры выбора для конкретной платформы, поэтому показ / скрытие ListPicker или положить ListPicker в модале это не то, что я ищу.

Кроме того, у меня будет довольно длинный список, поэтому действие Dialog для меня не сработает.

Обновление: мне известно о ниспадающем списке nativescript, однако он не использует специфичный для платформы виджет "выбор из списка вариантов", который делают веб-просмотры и реагирует на собственный плагин.

Под "платформой выберите виджет из списка вариантов" я имею в виду это (из https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select):

iOS (средство выбора заметок отображается там, где должна располагаться клавиатура, с помощью средства выбора Rolodex):

Android (примечание модальное, со списком параметров прокрутки):

2 ответа

Я думаю, что вы ищете ниспадающий код nativescript, похожий на тот, который вы указали на response -native-picker-select.

Я искал такое же решение и не мог найти его, поэтому создал свое собственное. Я приложил образец для вас здесь.

Вы можете иметь textField / Label и на вкладке, вы можете показать ListPicker, как Select ведет себя в HTML и будет использовать только нативные (специфичные для платформы) компоненты.

в вашем HTML

<StackLayout orientation="vertical" width="210" height="210" backgroundColor="lightgray">
  <Label text="Country" width="70" height="50" backgroundColor="red"></Label>
  <TextField [(ngModel)]="textFieldValue" hint="Choose countty..." editable="false" (tap)="showHideField('country')"></TextField>
</StackLayout>
<StackLayout orientation="vertical" width="100%" height="210" *ngIf="showCountryPicker" backgroundColor="lightgray">
  <ListPicker [items]="listPickerCountries" (selectedIndexChange)="selectedCountyChanged($event)"></ListPicker>
</StackLayout>

и ваш файл.ts

showCountryPicker = false;
listPickerCountries: Array < string > = ["Australia", "Belgium", "Bulgaria", "Canada", "Switzerland",
  "China", "Czech Republic", "Germany", "Spain", "Ethiopia", "Croatia", "Hungary",
  "Italy", "Jamaica", "Romania", "Russia", "United States"
];

showHideField() {
  this.showCountryPicker = true;
}
selectedCountyChanged(args) {
  const picker = < ListPicker > args.object;
  this.showCountryPicker = false;
  this.textFieldValue = this.listPickerCountries[picker.selectedIndex];
}