如何使用包含类名的变量来使用 navCtrl.push()?
Posted
技术标签:
【中文标题】如何使用包含类名的变量来使用 navCtrl.push()?【英文标题】:How to use navCtrl.push() using a variable that contains a class name? 【发布时间】:2018-11-25 10:36:53 【问题描述】:我正在 Ionic 3 和 AngularJS/Typescript 上使用 Visual Studio Code。 我使用 this.navCtrl.push() 跳转到另一个页面。 我有两个类/页面需要跳转,它们被称为“level1”和“level2”。当我使用
this.navCtrl.push(level2)
效果很好! 但是当我使用变量时:
levelNbr: any;
if(value == null)
this.levelNbr = "level1"
else
this.levelNbr = "level2"
this.navCtrl.push(this.levelNbr)
我收到一条错误消息:
未捕获(承诺):无效链接:level2
这意味着它的实际阅读级别2。但是它没有打开页面。 如何使用变量打开/推送页面?
谢谢
添加使用的代码:
import level1 from './../levels/levels';
import level2 from './../levels/levels';
//all classes are in one file called levels
在 app.modules.ts 中也声明了它们。
【问题讨论】:
【参考方案1】:因此,在您对这些组件使用“延迟加载”的情况下,新组件/页面的加载(在您的情况下推入堆栈)将完全按照您的方式工作。
显然(因为您收到无效链接错误)在这种情况下您没有使用延迟加载。
因此,为了帮助您的案例,您需要将相关组件导入您尝试执行此操作的组件并分配组件:
import Level1Component from '../whatever";
import Level2Coomponent from '../whatever2";
...
if(value == null)
this.levelNbr = Level1Component
else
this.levelNbr = Level2Component
this.navCtrl.push(this.levelNbr)
当然,这些导入的组件(级别)应该在您的整个应用程序的模块(app.module.ts)中正确声明
【讨论】:
我已经声明过了,但是你解决了我的问题!!!问题是我写的是 this.levelNbr = "Level1Component" 而不是 this.levelNbr = Level1Component 非常感谢! ;) 很高兴为您提供帮助。以上是关于如何使用包含类名的变量来使用 navCtrl.push()?的主要内容,如果未能解决你的问题,请参考以下文章