ионные 3 угловые данные не изменяются динамически - PullRequest
0 голосов
/ 28 апреля 2018

Я пытаюсь создать страницу входа, которая получает пользовательские данные с сервера и показывает сообщение об ошибке при вводе неправильного логина / пароля код выглядит так:

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>

значение errmsg в showerror () не влияет на html-страницу, если я не коснусь одного из входных данных. Я попытался console.log, но он работает отлично,

Ответы [ 3 ]

0 голосов
/ 28 апреля 2018

попробуйте

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

request(GetUserById, (error, response, body) => {
    if (error) throw new Error(error);
    if(this.check(body, x)){
        this.navCtrl.push(Home, {});
    }
    // createVerify
    else{
        this.showError()
        return
    }
});
0 голосов
/ 28 апреля 2018

Прежде всего params.myclass.errmsg и this.errmsg не одно и то же, вам нужно изменить params.myclass.errmsg на this .errmsg тогда будет показано

Изменить sohowError и request

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;
  }
});
0 голосов
/ 28 апреля 2018

Попробуйте, я думаю, вы не обновляете переменную уровня класса errmsg сообщением об ошибке.

var showError=() =>{
  //params.myclass.errmsg= "Invalid Username or Password";
  this.errmsg = "Invalid Username or Password";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...