用于将字符串中的单词大写的管道错误

Error in Pipe Used to Capitalize Words in a String

我正在尝试在我的 Angular 应用程序中创建一个更强大的大写管道。最初我的大写管道只需要将单个单词大写。现在我遇到了可以有多个单词的情况。这就是我的管道现在处理这种情况的样子:

transform(input: any) {
      if (input !== null) {
        const stringArr = input.split(' ');
        let result = ' ';
        const cap = stringArr.length;
        for (let x = 0; x < cap; x++) {
            stringArr[x].toLowerCase();
            if (x === cap - 1) {
            result += stringArr[x].substring(0, 1).toUpperCase() + stringArr[x].substring(1);
            } else {
            result += stringArr[x].substring(0, 1).toUpperCase() + stringArr[x].substring(1) + ' ';
            }
      }
    return result;
  }
}

但我在控制台中收到此错误:

ORIGINAL EXCEPTION: input.split is not a function

关于这里的内容有什么想法吗?

String#split 函数只能用于字符串,否则您将收到 ORIGINAL EXCEPTION: input.split is not a function 错误。

您必须设置一个条件,即给定元素必须是 string,如果不是,则必须将其更改(如果可能)为 string 或忽略。

if (input !== null && typeof input == 'string') { 
  input.split(' ') 
} else { 
  input.join().split(' ') 
}