1

我正在尝试在我的 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;
  }
}

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

原始异常:input.split 不是函数

关于这里发生了什么的任何想法?

4

1 回答 1

1

String#split函数只能在字符串上使用,否则你会收到ORIGINAL EXCEPTION: input.split is not a function错误。

您必须设置一个条件,即给定元素必须是 a string,如果不是 - 它必须更改(如果可能)为 astring或只是忽略。

if (input !== null && typeof input == 'string') { 
  input.split(' ') 
} else { 
  input.join().split(' ') 
}
于 2017-03-01T17:39:50.577 回答