Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 离子导入模块_Javascript_Angular_Typescript_Ionic Framework - Fatal编程技术网

Javascript 离子导入模块

Javascript 离子导入模块,javascript,angular,typescript,ionic-framework,Javascript,Angular,Typescript,Ionic Framework,我有一个问题,离子,角度,打字脚本,我迷路了一点 我想对我的文件调用一个外部函数,但是我得到了一个错误:promise:TypeError:undefined不是计算“this.alertCtrl.create”弹出窗口的对象 这是我的主要文件: import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; import { params } from '../../modul

我有一个问题,离子,角度,打字脚本,我迷路了一点

我想对我的文件调用一个外部函数,但是我得到了一个错误:promise:TypeError:undefined不是计算“this.alertCtrl.create”弹出窗口的对象

这是我的主要文件:

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';

import { params } from '../../modules/params';

@Component({
  selector: 'page-app',
  templateUrl: 'app.html'
})
export class AppPage {

  params = new params();

  constructor(public navCtrl: NavController) {
    this.params.popup("Hello", "test");
  }

}
以及包含以下功能的页面:

import { AlertController } from 'ionic-angular';

export class params {
    public alertCtrl: AlertController;
    constructor(){

    }

    popup(title, text){
        let alert = this.alertCtrl.create({
            title: title,
            subTitle: text,
            buttons: ['OK']
        });
        alert.present();
    }
}
我错在哪里?
非常感谢您的帮助。

要使注入正常工作,您必须将其作为构造函数参数传递:

import { AlertController } from 'ionic-angular';

export class params {
    constructor(public alertCtrl: AlertController) {

    }

    popup(title, text){
        let alert = this.alertCtrl.create({
            title: title,
            subTitle: text,
            buttons: ['OK']
        });
        alert.present();
    }
}
您之前拥有的是一个名为alertCtrl的公共属性的声明,类型为AlertController,但它从未被初始化,因此您得到了未定义的错误。

我的朋友

首先需要在包含要使用的函数的类中添加@Injectable decorator。例如:

import { Injectable } from '@angular/core';
import { AlertController } from 'ionic-angular';

@Injectable()
export class params {

    constructor(public alertCtrl: AlertController){

    }

popup(title, text){
    let alert = this.alertCtrl.create({
        title: title,
        subTitle: text,
        buttons: ['OK']
    });
    alert.present();
}
}
然后,只需在构造函数中注入变量,即可在页面中调用它,如下所示:

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';

import { params } from '../../modules/params';

@Component({
  selector: 'page-app',
  templateUrl: 'app.html'
})
export class AppPage {

  constructor(public navCtrl: NavController, public params: params) {
    this.params.popup("Hello", "test");
  }

}

希望我能帮助你=

我不知道@Injectable,你是最好的,非常感谢!很高兴我能帮忙=