我试图创建一个编辑,所以我创建一个表单,然后我分配值。但我得到一个错误
ExpressionChangedAfterItHasBeenCheckedError:表达式已更改 检查后。以前的值:' undefined'。当前值: ' XXXXXX'
这是我的edituser.ts
tx.executeSql('INSERT INTO items (parameter1, parameter2)' + ' VALUES(?,?);',[1,2],
function(tx, results){
console.log("l =", l)
console.log("k =", k)
console.log("i =", i)
}
);
这是我的表格edituser.html
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { Storage } from '@ionic/Storage';
/**
* Generated class for the EdituserPage page.
*
* See https://ionicframework.com/docs/components/#navigation for more info on
* Ionic pages and navigation.
*/
@IonicPage()
@Component({
selector: 'page-edituser',
templateUrl: 'edituser.html',
})
export class EdituserPage {
fullname : any;
Deskripsi : any;
phone:any;
Email:any;
user_id:any
userData = {"username": "","password": "", "fullName": "","Email": "", "Deskripsi" : "", "Phone":""};
constructor(public navCtrl: NavController, public navParams: NavParams,public storage: Storage) {
}
ionViewDidLoad() {
this.storage.get('userData').then((val) => {
this.fullname = val.fullname;
this.Deskripsi = val.Deskripsi;
this.phone = val.phone;
this.Email = val.Email;
this.user_id = val.user_id;
});
}
update(){
console.log(this.userData);
}
}
我该如何解决这个问题?
答案 0 :(得分:5)
由角度生命周期引起的此错误。使用enableProdMode
运行您的项目,如下所示。
在app.module.ts(定义项目引导和其他组件注册的主要组件)中
import { Component, NgModule, enableProdMode } from "@angular/core";
export class AppModule {
}
enableProdMode();
答案 1 :(得分:0)
ionViewDidLoad
似乎不合适。这听起来像视图已经完成加载,这意味着所有绑定都已设置。之后,您更改绑定,这可能会导致此问题。
您应该将storage.get
移至ngOnInit
生命周期挂钩
答案 2 :(得分:0)
这是生命周期错误。 Angular告诉你,在它的生命周期检查中,你改变了一个变量,它就丢失了。
为避免这种情况,您可以将ionViewDidLoad()
的内容包装为超时,或在其他地方调用。顺便问一下,你在哪里叫它?