javascript - TypeError: params[item].split är inte en funktion
Konsolen visar FEL TypeError: params[item].split är inte en funktion. All hjälp uppskattas. Den bästa hjälpen skulle vara att förstå mitt fel i hur jag närmar mig detta problem.
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();
}
Det här är mitt fel:
Svar #1
Det är för att det inte är ett vanligt föremål. Det är någon slags kantig magisk grej. För att få värdet måste du göra.
params.get('whatever property');
i ditt fall
params.get(item).split(',');
Att utöka vad jag skulle göra i ditt fall.
['courts', 'groups', 'zones'].forEach(item => {
const value = params.get(item);
if (value) {
this.formData[item] = value.split(',');
}
});
Svar #2
Denna kod förutsätter att params[item] är en sträng:
this.formData[item] = params[item].split(',')
JavaScript-strängar har en split-metod:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split
Om det inte är en sträng kommer det inte att ha en split-metod och därför kommer du att få veta:
params[item].split är inte en funktion
För att kontrollera dess typ gör:
console.log('params[item]', params[item], typeof params[item])
