我有离子,角度,打字稿的问题,我迷路了一点......
我想在我的文件中调用外部函数,但是我收到错误:" Uncaught(在promise中):TypeError:undefined不是对象(评估' this.alertCtrl。创建')弹出"
这是我的主要文件:
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();
}
}
我哪里错了? 非常感谢你的帮助。
答案 0 :(得分:1)
要使注入正常工作,必须将其作为构造函数参数传递:
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
的公共属性的声明,但它从未被初始化,这就是您遇到未定义错误的原因。
答案 1 :(得分:0)
我的朋友。
首先需要在包含要使用的函数的类中添加@Injectable()装饰器。例如:
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");
}
}
希望我能帮到你! =)