NativeScriptにSideDrawer
を実装する必要があります。メニューエントリは、状況によっては動的に変更される可能性があります。NativeScriptのSideDrawer内でListViewを使用できますか?
リストが長くなる可能性があり、スクロールが必要になる可能性があるため、ListView
を使用してメニュー項目を表示することにしました。
しかし、私はそれを動作させるように見えないので、理由を見つけることができません。 NativeScript for Angularのドキュメントは少し不完全であり、正しく組み立てているかどうかはわかりません。
SideDrawer
は正しく機能していますが、ListView
は表示されません。 ListView
の代わりにStackLayout
を使用して要素を追加すると、それらが表示されます。
この
は、私が働いているテンプレートです:私が使用している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")
);
}
}
:
<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>
と、これはコンポーネントのコードですが、私は非関連のロジックを削除しました
- nativescript:2.2.1
- nativescript-角度:0.3.1
- nativescript-telerik-UI:1.3.1
任意の提案ですか?
おかげ
あなたはあなたが "LISTVIEW_PROVIDERS" を追加したよろしいです「nativeScriptBootstrap」コールは、https://github.com/telerik/nativescript-ui-samples-angular/blob/release/sdkAngular/app/app.ts#L28に表示されますか? –
@VladimirAmiorkovもちろんそれが問題でした。提案していただきありがとうございます! – Giordano