現在、Ionicアプリのローカルストレージを使用しています。私はローカルストレージからデータを追加して取得することができますが、特定のオブジェクトを削除しようとすると、DB内のすべてが削除されます。 "ランタイムエラー - 未定義の 'プッシュ'プロパティを読み取ることができません"Ionic - ローカルストレージからオブジェクトを削除する
appsユーザーのシナリオでは、ユーザーが次のエラーメッセージを表示します。好きなテレビ番組をお気に入りのリストに表示し、そこから希望すれば不快にすることができます。
ここでのlocalStorageするための機能を保持している私のサービスで私のコードです:
export class FavoritesService{
constructor(private storage: Storage){}
public favoritesSeries: any = [];
addSeriesToFavorites(serie: any)
{
this.favoritesSeries.push(serie);
console.log('Add to');
console.log(this.favoritesSeries);
this.storage.set('FavSerie',this.favoritesSeries);
}
getFavoriteSeries(){
this.favoritesSeries = [];
this.storage.get('FavSerie').then((val) => {
console.log(val);
if (val){
this.favoritesSeries = val;
}});
}
removeFavoriteSeries(){
this.storage.remove('FavSerie').then((val)=>{
this.favoritesSeries = val
console.log('serie is removed');
});
}
saveChanges(favoriteSeries: any) {
this.favoritesSeries = favoriteSeries;
this.storage.set('favoriteSeries', this.favoritesSeries);
}
}
私のお気に入りのページ:
export class Favorites {
series: {};
constructor(public navCtrl: NavController,
public navParams: NavParams,
public seriesService: SeriesService,
public alertCtrl: AlertController,
public favoritesService: FavoritesService) {
}
ionViewDidLoad() {
//presents the favorite series
this.series = this.favoritesService.favoritesSeries;
console.log(this.favoritesService.favoritesSeries);
console.log(this.series);
}
onRemoveFromFavorites(FavSerie: any){
const alert = this.alertCtrl.create({
title: 'Remove From Favorites',
subTitle: 'Are you sure?',
message: 'Are you sure you want to remove from favorites?',
buttons: [
{
text: 'Yes',
handler:() => {
console.log('OK');
console.log(FavSerie);
this.favoritesService.removeFavoriteSeries();
console.log('efter service addToFavorite');
}
},
{
text: 'No',
role: 'cancel',
handler:() => {
console.log('Cancel');
}
}
]
});
alert.present();
}
}
これはほとんど働いていました!私が "Unfavorite"を押すと、お気に入りの配列の新しい配列がDBに保存されます。しかし、私はまだブラウザのページを更新する場合は、リスト内のすべてのシリーズを参照してください。 また、私のfavorites.tsファイルは、私のオリジナルの投稿に表示されるように動作しません。系列を削除する方法は赤で、「指定されたパラメータは呼び出し対象のシグネチャと一致しません」と表示されます。なぜ私はFavSerie配列を送信してはいけないのですか? –
'onRemoveFromFavorites'を編集する必要があります。私は答えの中で使用例を加えました。 –
ワンステップに近い! 1つのセリフで「unfavorite」を押すだけでも、私のリストのすべてが削除されます。しかし、シリーズに取り除いたときに新しいセリフを追加するのが少なくとも私の問題は解決されました。私はもはや同じエラーは発生しません。これは私のDBの様子です:https://imgur.com/a/7N1YP –