2017-03-01 27 views
0

我使用nativescript-ui-samples-angular代码为RadSideDrawer(侧面菜单)的代码。它完美的工作,但是当我试图将它们全部包装在一个单独的组件中,然后通过选择器将其添加到其他组件中时,它会变得平坦。通用的侧面菜单组件

@ViewChild(RadSideDrawerComponent) public drawerComponent: RadSideDrawerComponent; 
private drawer: SideDrawerType; 

ngAfterViewInit() { 
    this.drawer = this.drawerComponent.sideDrawer; 
    this._changeDetectionRef.detectChanges(); 
} 

它说

无法读取属性未定义

'sideDrawer' 我缺少的东西?问题不在于侧边菜单本身,而是将其包装到可重用组件中。

+0

不能肯定,但我认为弥敦道沃克使用在ShoutOutPlay(HTTPS一侧抽屉:// github.com/NathanWalker/ShoutOutPlay/tree/development/app)可能会尝试挖掘周围,看看他是否在应用程序的不同部分重复使用它。 –

回答

1

除了通过RadSideDrawerComponent获得参考的办法,你也可以使用角度ID,并将其如下

file.component.html(创建的唯一ID为你的抽屉传递给你的@ViewChild指令)

<RadSideDrawer #myDrawer> 

file.component.ts

@ViewChild("myDrawer") public drawerComponent: RadSideDrawerComponent; 

测试项目可以发现here(看看应用程序/家/ home.component.ts

+0

我仍然试图使用使用RadSideDrawer的旧方法(其中页面内容未被RadSideDrawer自身封装)。所以我的做法有缺陷。有了您的提示,我可以获得参考,但我不得不重新考虑使用组件本身的方式。接受答案。 – Zoidy