首页 > 解决方案 > ionic 3 角度数据不会动态变化

问题描述

我正在尝试创建一个登录页面,该页面从服务器获取用户数据并显示错误登录/密码的错误消息,代码如下所示:

login(x) {
    // alert(this.form.value)
  this.errmsg = "";
  if (x.uid == "" || x.pwd == "") {
    this.errmsg = "Fields should not be empty";
  }else{
    // parameter to pass on class
    var params={
      myclass:this,
    }
      //  Getrequest to get element by id 
    var GetUserById = {
      method: 'GET',
      url: 'http://192.168.136.136:8100/User/' + x.uid + '/',
      headers:
        {
          'Postman-Token': 'a81c98b6-5921-4ab5-bfbc-27dcff4b36ea',
          'Cache-Control': 'no-cache'
        }
      }
      var check=(body, x) =>{
        body=JSON.parse(body)
        if (body.length == 0) {
          return false
        }
        else {
          var uinfo = body[0]
          if (uinfo.Password == x.pwd) {
            window.sessionStorage.setItem('username', uinfo.UserId);
            window.sessionStorage.setItem('Role', this.defineRole(uinfo.Role));
            // window.sess

            return true
        }
        else{
          return false
        }
      }
    }
    var showError=() =>{
      params.myclass.errmsg= "Invalid Username or Password"
    }

    request(GetUserById, function (error, response, body) {
      if (error) throw new Error(error);
      if(check(body, x)){
        params.myclass.navCtrl.push(Home, {});
      }
      // createVerify
      else{
        showError()
        return
      }
    });
    }
 }

html:

<form [formGroup]="form" (ngSubmit)="login(form.value)">
  <ion-list>
    <ion-item>
      <ion-input type="text" formControlName="uid" placeholder="Username"></ion-input>
    </ion-item>
    <ion-item>
      <ion-input type="password" formControlName="pwd" placeholder="Password"></ion-input>
    </ion-item >
  </ion-list>
  <p id="almsg" class="text-right small" >{{errmsg}}</p>
  <div padding>
    <button ion-button type="submit" color="basic" block >Sign In</button>
  </div>
</form>

showerror() 中的 errmsg 不会影响 html 页面,除非我点击其中一个输入。我试过console.log,但效果很好,

标签: angularionic-frameworkionic3

解决方案


首先 params.myclass.errmsgthis.errmsg不一样,你需要将params.myclass.errmsg更改为this.errmsg然后才会显示

修改sohowErrorrequest

var showError=() =>{
  this.errmsg= "Invalid Username or Password"
}


request(GetUserById, function (error, response, body) {
  if (error) throw new Error(error);
  if(check(body, x)){
    params.myclass.navCtrl.push(Home, {});
  }
  // createVerify
  else{
    showError();
    return false;
  }
});

推荐阅读