Это происходит потому, что вы не инициализируете переменную serviceList
.
Объявленная и не инициализированная переменная имеет значение undefined
.
var x;
console.log(x); // undefined
Если вы используете оператор +
между undefined
и строкой, undefined
будет приведен к строке "undefined"
:
var x;
console.log(x + 'foo'); // undefinedfoo
Чтобы решить эту проблему, инициализируйте serviceList
пустой строкой:
let serviceList: string = '';
Я отвечу и на вопрос вашего комментария.
Есть много способов объединить список строк, мой любимый - использовать .join
:
var concatenated = ['list', 'of', 'elements'].join(' - ');
console.log(concatenated);
В вашем случае это будет:
serviceList = this.servicesToToggle.join('-');
Другим решением, если хотите, может быть проверка индекса, мы не ставим -
, если index === 0
:
this.servicesToToggle
.filter(Boolean) // removes null, undefined and empty strings
.forEach((element, index) => {
const separator = index === 0 ? '' : '-';
serviceList += separator + element;
});