为什么我的推送方法无法使用 Ionic?

Why my push-method is not working using Ionic?

我正在使用 ionic 3,当我尝试在 mi 数组中推送一个元素时,警报控制器出现问题。我不知道我的代码有什么问题,我认为我只需要接收参数并推送它来完成操作但是当我尝试执行我的代码时我只会遇到一个很大的错误。

对不起,我知道我的英文很烂。

代码

  addPregunta() {
    const prompt = this.alertCtrl.create({
      title: "Login",
      message: "Enter a name for this new album you're so keen on adding",
      inputs: [
        {
          name: "title",
          placeholder: "Title"
        }
      ],
      buttons: [
        {
          text: "Cancel",
          handler: data => {
            console.log("Cancel clicked");
          }
        },
        {
          text: "Save",
          handler: data => {
            const preObj = {
              type: "radio",
              label: data.title
            };
            this.preguntas.push(preObj);
            this.changeData(data.title);
            this.mermaidStart();
          }
        }
      ]
    });
    prompt.present();
  }

数组

preguntas: object[];

错误

您已将变量声明为 Array 类型,但未对其进行初始化,因此在尝试将其推入时失败。

preguntas: object[]; preguntas 属性 已定义,但未使用值初始化。

console.log(this.preguntas) // will be undefined

问题出在 save 处理程序中:

{
  text: "Save",
  handler: data => {
    const preObj = {
      type: "radio",
      label: data.title
    };
    this.preguntas.push(preObj); // <-- the problem is with this line
    this.changeData(data.title);
    this.mermaidStart();
}

第一次调用this.preguntas.push(preObj)时。 this.preguntasundefinedarray.push 将不起作用,因为 this.preguntas 不是数组。

您可以选择将 preguntas 属性 初始化为数组,或者在调用 .push.

之前检查处理程序中的值

选项 1

将属性初始化为数组

preguntas: object[] = [];

选项 2 在推送之前检查 save 处理程序中的值。

There are countless ways to check or even use an immutable approach

// similar style with your existing code
if(this.preguntas) {
  this.preguntas.push(preObj);
} else {
  this.preguntas = [preObj];
}

// immutable approach
this.preguntas = [...this.preguntas, preObj]