Мне нужно реализовать SideDrawer
в NativeScript с элементами меню, которые могут динамически меняться в зависимости от некоторых условий.
Я решил использовать ListView
для отображения пунктов меню, потому что список может быть длинным и, вероятно, потребуется прокрутка.
Тем не менее, я не могу заставить его работать, и я не могу найти причину. Документация по NativeScript для Angular немного неполная, и я не уверен, что правильно собираю части.
SideDrawer
работает правильно, но ListView
не отображается. Обратите внимание, что если я добавляю элементы, используя StackLayout
вместо ListView
, они отображаются.
Это шаблон, над которым я работаю:
<ActionBar title="Inline" >
<NavigationButton [visibility]="hideDrawer || (isAndroid ? 'visible' : 'collapse')" icon="res://ic_menu" (tap)="onDrawerTap()"></NavigationButton>
<ActionItem [visibility]="hideDrawer || (isAndroid ? 'collapse' : 'visible')" icon="res://ic_menu" ios.position="right" (tap)="onDrawerTap()"></ActionItem>
</ActionBar>
<RadSideDrawer #drawer>
<StackLayout tkDrawerContent class="sideStackLayout">
<GridLayout>
<RadListView [items]="menuEntries" orientation="vertical">
<template tkListItemTemplate let-item="item">
<StackLayout>
<Label [text]="item.label" class="sideLabel"></Label>
</StackLayout>
</template>
</RadListView>
</GridLayout>
</StackLayout>
<StackLayout tkMainContent>
</StackLayout>
</RadSideDrawer>
и это код компонента, я удалил неактуальную логику:
import * as application from "application";
import { Component, ViewChild, OnInit } from "@angular/core";
import { RadSideDrawerComponent, SideDrawerType } from "nativescript-telerik-ui/sidedrawer/angular";
import * as applicationSettings from "application-settings";
class MenuEntry {
constructor(
public label: string,
public url: string
){}
}
@Component({
selector: "main-container",
templateUrl: 'app.component.html',
styleUrls: ['app.component.css']
})
export class AppComponent implements OnInit {
@ViewChild(RadSideDrawerComponent)
public drawerComponent: RadSideDrawerComponent;
private drawer: SideDrawerType;
isAndroid:boolean = application.android !== null;
hideDrawer = false;
menuEntries:Array<MenuEntry> = [];
constructor() {}
ngAfterViewInit() {
this.drawer = this.drawerComponent.sideDrawer;
}
public onDrawerTap() {
this.drawer.toggleDrawerState();
}
public closeDrawer(){
this.drawer.closeDrawer();
}
ngOnInit(){
this.generateMenu();
}
private generateMenu(): void {
this.menuEntries.push(
new MenuEntry("LABEL1", "/place1"),
new MenuEntry("LABEL2", "/place2")
);
}
}
Я использую:
- родной скрипт: 2.2.1
- родной скрипт-угловой: 0.3.1
- родной скрипт-телерик-уи: 1.3.1
Какие-либо предложения?
Спасибо