Android 延迟访问离子2类中的属性
我有一个非静态的交易文件,定期从服务器获取。我无法更改文件的格式 当我在我的Ionic应用程序中实例化一个新页面时,我从存储器中的一个值设置Android 延迟访问离子2类中的属性,android,angular,storage,ionic2,Android,Angular,Storage,Ionic2,我有一个非静态的交易文件,定期从服务器获取。我无法更改文件的格式 当我在我的Ionic应用程序中实例化一个新页面时,我从存储器中的一个值设置this.traducations。见下文: constructor(storage: Storage, public navCtrl: NavController, public navParams: NavParams, public commandeService: CommandeService, public alertCtrl: AlertCon
this.traducations
。见下文:
constructor(storage: Storage, public navCtrl: NavController, public navParams: NavParams, public commandeService: CommandeService, public alertCtrl: AlertController, public translate: TranslateService) {
this.categorie = this.navParams.get('categorie');
storage.get('boissons').then((StringBoissons) => {
var boissons: Array<any> = JSON.parse(StringBoissons);
this.boissons = boissons.filter(
(value) => {
return value.tboi_id == this.categorie.tboi_id;
});
}
);
storage.get('traductions').then((val) => {
this.traductions = JSON.parse(val);
});
this.commande = commandeService.getCommande();
this.translate = translate;
}
在浏览器预览中一切正常,但在设备上我得到了一个
无法调用null的方法“find”
在t.GettRadion
我认为这是由于异步结果造成的,但我不能完全理解它,也不能想出如何解决这个问题
提前感谢您提供的任何见解好的,非常愚蠢的问题: 您应该将getTradection函数放在提供程序中
@Injectable()
export class TraductionDynaService {
traductions;
constructor(
public storage: Storage,
public http: Http,
public translate: TranslateService,
) {
storage.get('traductions').then((val) => {
this.traductions = JSON.parse(val);
});
}
getTraduction(table, champ, id, objet) {
var traduction = this.traductions.find( (value) => {
return value.trad_table == table && value.trad_champ == champ && value.trad_code_langue == this.translate.currentLang && value.trad_id_item == objet[id];
});
if ( traduction && traduction.trad_texte )
return traduction.trad_texte;
else
return objet[champ];
}
}
它就像一个符咒
getTraduction(…)
甚至可以在traduction为null或未定义时返回处理的承诺…好的,非常愚蠢的问题实际上是:
您应该将getTradection函数放在提供程序中
@Injectable()
export class TraductionDynaService {
traductions;
constructor(
public storage: Storage,
public http: Http,
public translate: TranslateService,
) {
storage.get('traductions').then((val) => {
this.traductions = JSON.parse(val);
});
}
getTraduction(table, champ, id, objet) {
var traduction = this.traductions.find( (value) => {
return value.trad_table == table && value.trad_champ == champ && value.trad_code_langue == this.translate.currentLang && value.trad_id_item == objet[id];
});
if ( traduction && traduction.trad_texte )
return traduction.trad_texte;
else
return objet[champ];
}
}
它就像一个符咒<代码>getTraduction(…)甚至可以在traduction为null或未定义时返回处理承诺