Ionic this.storage.get
на самом деле не возвращает никакого значения, кроме обещания, на которое затем нужно «подписаться».
Таким образом, storedArr = this.storage.get('stored') ? this.storage.get('stored').then((e) => {e}) : [];
при успехе фактически сохраняет обещание внутри storedArr
тогдапри неудаче он все еще возвращает обещание.Отсюда и ошибка - потому что Promise.prototype
не содержит метод push
.Таким образом, троичный оператор оценивает true
, и поэтому []
будет не назначаться storedArr
.
Для того, чтобы получить значение Ionic this.storage.get('stored')
, у вас есть«подписаться» на возвращенное обещание, а затем назначить параметр data
для storedArr
.Вот так ...
export class MyPage {
storedArr = [];
constructor(private storage: Storage) {
this.storage.get('stored')
.then(data => {
this.storedArr = data;
});
}
saveToStorage() {
this.storedArr.push({ // .push is not a function
title: 'blabla',
body: 'more blabla'
});
this.storage.set('stored', this.storedArr);
}
}