如何使用包含类名的变量来使用 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()?的主要内容,如果未能解决你的问题,请参考以下文章

Java高级特征

如何让scss变量能够当做js变量来使用

static为什么能和final一起来使用?

如何在Windows中通过Cygwin来使用Linux命令行

java中static 与private的用法

静态变量和实例变量的区别?