TypeError:params [item] .split不是函数

时间:2018-09-27 15:36:49

标签: javascript angular typescript

控制台输出错误TypeError: params[item].split不是函数。任何帮助表示赞赏。最好的帮助是了解我在解决此问题时的错误。

routeReady() {
    this.activeRoute.queryParams
        .pipe(switchMap(params => {
            if (!params['filter']) {
                // use previous month as default
                let date : Date = new Date();
                date.setDate(1);
                date.setMonth(date.getMonth() - 1);
                this.formData.startDate = DateUtils.dateToText(date);
                date.setDate(DateUtils.getDaysInMonth(date));
                this.formData.endDate = DateUtils.dateToText(date);
            }
            ['startDate', 'endDate', 'club'
                , 'subscription', 'sold'].forEach(item => {
                if (item in params && params[item] !== '') {
                    this.formData[item] = params[item];
                }
            });
            ['courts', 'groups', 'zones'].forEach(item => {
                if (item in params && params[item] !== '') {
                    this.formData[item] = params[item].split(',');
                }
            });
            return Promise.resolve(true);
        }))
        .subscribe();
}

这是我的错误:

enter image description here

2 个答案:

答案 0 :(得分:2)

那是因为它不是常规对象。它有些棱角分明的东西-o。 要获得价值,您要做的。

params.get('whatever property');

以您的情况

params.get(item).split(',');

扩展我在您的情况下的工作。

['courts', 'groups', 'zones'].forEach(item => {
  const value = params.get(item);

  if (value) {
    this.formData[item] = value.split(',');
  }
});

答案 1 :(得分:1)

此代码假定params [item]是字符串:

this.formData[item] = params[item].split(',')

JavaScript字符串具有拆分方法:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split

如果它不是字符串,它将没有split方法,因此您将被告知:

  

params [item] .split不是函数

要检查其类型,请执行以下操作:

console.log('params[item]', params[item], typeof params[item])