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

时间:2017-02-28 17:02:30

标签: javascript angular typescript pipe angular-pipe

我正在尝试在我的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不是函数

关于这里有什么想法?

1 个答案:

答案 0 :(得分:1)

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

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

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