警报控制器输入框验证

Cha*_*oot 9 typescript ionic-framework ionic2 ionic3 angular

如何验证和显示Ionic 2或3中警报控制器中输入的错误

let prompt = Alert.create({
      title: 'Alert input validation',
      message: "How can I validate below input field?",
      inputs: [ 
        {
          name: 'email',
          placeholder: 'email'
        },
      ],
      buttons: [
        {
          text: 'Save',
          handler: data => {
                        let validateObj = this.validateEmail(data);
                        if (!validateObj.isValid) {
                            alert(validateObj.message);
                            return false;
                        } else {
                            //make HTTP call
                        }
                    }
        }
      ]
    });
Run Code Online (Sandbox Code Playgroud)

有人已经更新了警报控制器,并确实拉动了Ionic团队的请求.我认为Ionic团队规划将来会实现这一点. https://github.com/ionic-team/ionic/pull/12541

我需要一些解决此验证功能的方法.

plnkr http://plnkr.co/edit/IBonfBJngky0h8UtMwMD?p=preview

感谢您的帮助.

Sam*_*ath 15

此时此功能尚未实现.您可以看到此Git问题.

我在Toast这里使用了通知,我没有从我的客户那里得到任何投诉:)

这就是我所做的.

警告boxe的done处理程序:

{
          text: 'Done',
          handler: (data) => {
            if (EmailValidator.isValid(data.email)) {
              if (this.data) {
                //my code
              } else {
                //my code
              }
              return true;
            } else {
              this.showErrorToast('Invalid Email');
              return false;
            }
          }
        }
Run Code Online (Sandbox Code Playgroud)

吐司方法是这样的:

showErrorToast(data: any) {
    let toast = this.toastCtrl.create({
      message: data,
      duration: 3000,
      position: 'top'
    });

    toast.onDidDismiss(() => {
      console.log('Dismissed toast');
    });

    toast.present();
  }
Run Code Online (Sandbox Code Playgroud)

UI

在此输入图像描述


the*_*der 7

我确实通过使用setMessage方法找到了解决方法.最初消息将为空,当用户未输入任何值时,将在单击时填写验证消息.找到下面的代码段

let prompt = Alert.create({
  title: 'Alert input validation',
  message: '',
  inputs: [ 
    {
      name: 'email',
      placeholder: 'email'
    },
  ],
  buttons: [
    {
      text: 'Save',
      handler: data => {
                    let validateObj = this.validateEmail(data);
                    if (!validateObj.isValid) {
                        prompt.setMessage('Your validation message');
                        return false;
                    } else {
                        //make HTTP call
                    }
                }
    }
  ]
});
Run Code Online (Sandbox Code Playgroud)

您可以覆盖variable.scss文件中的消息字体,如下所示

$alert-md-message-text-color:red;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述