NativeScript:toggleDrawerState不是函数错误

NativeScript:toggleDrawerState不是函数错误,nativescript,angular2-nativescript,nativescript-telerik-ui,Nativescript,Angular2 Nativescript,Nativescript Telerik Ui,我正在尝试用本机脚本创建一个示例应用程序。我通过引用以下方式使用RadSideDrawer作为侧菜单: 及 会出什么问题?我将this.drawer作为[object object],this.drawer.nativeElement作为ProxyViewContainer(5),这意味着它正在标识元素,但无法调用ToggleDrawersState() 此外,样式现在被扭曲了,它现在在主视图中列出TKDRAPER内容,我不能看到TKMIN内容中指定的原始页面内容。 有一些事情需要考虑RADED

我正在尝试用本机脚本创建一个示例应用程序。我通过引用以下方式使用RadSideDrawer作为侧菜单:

会出什么问题?我将this.drawer作为[object object],this.drawer.nativeElement作为ProxyViewContainer(5),这意味着它正在标识元素,但无法调用ToggleDrawersState()


此外,样式现在被扭曲了,它现在在主视图中列出TKDRAPER内容,我不能看到TKMIN内容中指定的原始页面内容。

有一些事情需要考虑RADEDRAPER(在N+angal2项目中)。

1)你有一个特殊的输入法

import { RadSideDrawerComponent, SideDrawerType } from "nativescript-telerik-ui-pro/sidedrawer/angular";

@ViewChild(RadSideDrawerComponent) public drawerComponent: RadSideDrawerComponent;
private drawer: SideDrawerType;
2.)您需要在组件的构造函数中实现ChangeDetectorRef

import { Component, ElementRef, ViewChild, Injectable, OnInit, ChangeDetectorRef } from "@angular/core";
.....
constructor(private page: Page, private _changeDetectionRef: ChangeDetectorRef) {
        super();
}
3.)在ngAfterViewInit中,像这样使用ChangeDetectorRef

ngAfterViewInit() {
    this.drawer = this.drawerComponent.sideDrawer;
    this._changeDetectionRef.detectChanges();
}
4.)最后使用抽屉的方法很简单

public toggleDrawer() {
    this.drawer.toggleDrawerState();
}

.....
<Button text="TOGGLE DRAWER" (tap)=toggleDrawer()></Button>
public-toggleDrawer(){
this.drawer.toggleDrawerState();
}
.....

可以找到将RadSideDrawer与angular一起使用的完整示例

抱歉,但是从哪里可以获得
.nativeElement
,因为我在nativescript教程的API参考章节第4章的任何地方都没有看到它。我使用此方法获取其他元素,只有RadSideDrawer有问题。这是ElementRef中的一个属性。在第三步中,我得到一个错误。drawerComponent未定义。如果我使用@ViewChild(“drawer”)drawerComponent,我得到一个[object object]:RadSideDrawerComponent;但是this.drawerComponent.sideDrawer正在变得未定义。不要通过id获取您的抽屉:如果我使用该方法,请参阅此处的工作演示,我将在您提到的第三步中获取this.drawerComponent的未定义值。发现错误后,我没有在我的app.module.ts中注入sideDrawer_指令。谢谢你的帮助!
import { RadSideDrawerComponent, SideDrawerType } from "nativescript-telerik-ui-pro/sidedrawer/angular";

@ViewChild(RadSideDrawerComponent) public drawerComponent: RadSideDrawerComponent;
private drawer: SideDrawerType;
import { Component, ElementRef, ViewChild, Injectable, OnInit, ChangeDetectorRef } from "@angular/core";
.....
constructor(private page: Page, private _changeDetectionRef: ChangeDetectorRef) {
        super();
}
ngAfterViewInit() {
    this.drawer = this.drawerComponent.sideDrawer;
    this._changeDetectionRef.detectChanges();
}
public toggleDrawer() {
    this.drawer.toggleDrawerState();
}

.....
<Button text="TOGGLE DRAWER" (tap)=toggleDrawer()></Button>