Javascript 离子导入模块
我有一个问题,离子,角度,打字脚本,我迷路了一点 我想对我的文件调用一个外部函数,但是我得到了一个错误:promise:TypeError:undefined不是计算“this.alertCtrl.create”弹出窗口的对象 这是我的主要文件: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
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,你是最好的,非常感谢!很高兴我能帮忙=