【问题标题】:How to use navCtrl.push() using a variable that contains a class name?如何使用包含类名的变量来使用 navCtrl.push()?
【发布时间】: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 中也声明了它们。

【问题讨论】:

    标签: angularjs typescript ionic3


    【解决方案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 非常感谢!
    • ;) 很高兴为您提供帮助。
    猜你喜欢
    • 2010-12-12
    • 2022-01-15
    • 1970-01-01
    • 2011-11-22
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多