Ionic 3 - 提供的参数与呼叫目标的任何签名都不匹配

时间:2017-05-01 04:20:34

标签: angular ionic-framework ionic2 ionic3

我正在尝试从数组中删除单个对象,我该怎么做? 我尝试使用this.storage.remove('details')作为离子指示here,但它将删除所有数组,这是我当前的尝试:

它给我一个错误“提供的参数与呼叫目标的任何签名都不匹配”

  private details: {name: string, fav: string}[] = []; 

  hapusDetail(val) {
  let test: string[] = [val]

  this.storage.remove(toString(test)) //really lost here
  //console.log(val)
  }


> Cordova CLI: 6.5.0 
> Ionic Framework Version: 3.1.1
> Ionic CLI Version: 2.2.3
> Ionic App Lib Version: 2.2.1
> Ionic App Scripts Version: 1.3.6
> ios-deploy version: Not installed
> ios-sim version: Not installed
> OS: Linux 4.8
> Node Version: v6.10.2
> Xcode version: Not installed

val包含要删除的所需对象,例如{name:john,fav:apple}

基本上我需要的是从包含{name:bob,fav:banana},{name:ed,fav:grape},{name:john,fav}的数组中删除{name:john,fav:apple} :apple}

提前谢谢

1 个答案:

答案 0 :(得分:1)

您获得的错误是因为您正在使用错误的属性/类型触发命令。我的猜测是删除命令。我不知道你是否有一个名为toString()的函数,但我的猜测就是这个问题。尝试将其设为'UserData'之类的基本字符串,并查看错误是否仍然显示。

但这不会解决您的实际问题,

存储与用户设备上保存的数据集特别相关。如果要从数组中删除特定项(暂时),您需要先弄清楚它的位置,然后将其从数组中删除。

示例:

let myArray = ['apples', 'oranges', 'bananas'];

// find oranges
let position = myArray.indexOf('oranges');

//splice it out
myArray.splice(position, 1);

如果你想从本地存储的数据中删除它,你只需要在整个阵列上执行你的操作,然后存储它不要删除它。当您使用Ionic存储对象时,您可以为它们命名,您的代码实际上看起来像是要将值转换为字符串。

让我分解一下:

// Get the saved stuff, Ionic will convert it for you
let userData = this.storage.get('UserData');

// Lets say favorite fruit is a value of the user data.

let fruit = userData.fruit; // ['apples', 'oranges', 'bananas']

// find oranges
let position = myArray.indexOf('oranges');

//splice it out, remember fruit is a shorthand reference to userData.fruit
fruit.splice(position, 1);

// Now, the data we save/load is called 'UserData' it has nothing to do with the data itself

this.storage.set('UserData', userData);

希望有所帮助..