Я использую NativeScript Angular2, и на своей странице я добавил ListPicker, чтобы пользователь мог выбрать вариант. Ниже приведен фрагмент кода для файла html:
<ListPicker #languagePicker id="languagePicker" [visibility]="langSelectStatus()" [items]="languages" class="mek-select-field" (selectedIndexChange)="selectedIndexChanged(languagePicker)"
>
</ListPicker>
Следующее - это css:
.mek-select-field {
height: 70px;
border-color: lightblue;
border-width: 1px;
margin: 0;
}
Я обнаружил, что код работает без проблем на iOS, следующий снимок экрана: ListPicker на iOS а>
Однако на Android обнаружил, что ListPicker не работает. Он отображает список, но не может перемещаться между заданными параметрами. Следующий снимок экрана: ListPicker на Android
Ниже приводится информация о среде:
- Версия NativeScript: 2.4.0
- Версия NativeScript-Angular: 1.1.3
- Версия NativeScript Android Runtime: 2.4.1
- Эмулятор Android: API 25 Nexus 6
Я новичок в NativeScript и не уверен, связано ли это с моей средой или нет.
Любой совет будет очень кстати. заранее спасибо
[Обновлено 26 ноября 2016 г.]: Изучив образец в соответствии с рекомендациями Нико и проведя дополнительное тестирование, я обнаружил, что такое поведение проявляется только тогда, когда значения параметров извлекаются из серверной части через службу Http. Например, в примере класса create-listpicker.component.ts, если я изменю список опций для извлечения из серверной части Http, как показано ниже:
export class CreatingListPickerComponent {
public pokemons: Array<string>;
public picked: string;
constructor(private http: Http) {
this.pokemons = [];
this.http.get('http://192.168.31.120:3000/pokemons').subscribe(
res => {
let list = res.json();
console.log(`Pokemon list: ${list}`);
for (var i = 0; i < list.length; i++) {
this.pokemons.push(pokemonList[i]);
}
}
);
/* for (var i = 0; i < pokemonList.length; i++) {
this.pokemons.push(pokemonList[i]);
}*/
}
public selectedIndexChanged(picker) {
console.log('picker selection: ' + picker.selectedIndex);
this.picked = this.pokemons[picker.selectedIndex];
}
}
Где конечная точка ответит тем же значением, что и жестко запрограммированное значение. Когда я запускаю приведенный выше код в Android (как в эмуляторе, так и в устройстве), я обнаружил, что ListPicker не может время от времени отображать какие-либо параметры (или только первый). Это очень легко воспроизвести. У iOS этой проблемы нет.
Я считаю, что существуют некоторые проблемы, когда параметры ListPicker поступают из бэкэнда Http, где будет присутствовать некоторая задержка.
Добрый совет Кларенс