-2

我试图在角度2模板(aka视图)中大写一个字符串的单词,但在控制台中出现以下错误,应用程序不加载(显示空白页):大写字母的第一个单词(或者可选的所有单词)的大写字母2+

Error: Uncaught (in promise): Error: Template parse errors: The pipe 'capitalize' could not be found

我正在尝试以下操作。以下示例使用文字字符串进行说明。实际上,字符串将是角2分量中的变量。

  1. 如果未提供参数,则只能首字母大写句子的第一个单词。
{{ 'heLlo woRld' | capitalize }} // outputs "HeLlo woRld" - Only "H" is capitalized 
  • 通过使参数 '所有' 大写字符串的所有单词。
  • {{ 'heLlo woRld' | capitalize:'all' }} // outputs "HeLlo WoRld" - Both "H" and "W" are capitalized

  • 其他一些边缘情况将被满足是:
  • {{ 'a' | capitalize }}     // outputs "A" 
    
    {{ 'a' | capitalize:'all' }}    // outputs "A" 
    
    {{ '' | capitalize }}     // outputs nothing 
    
    {{ '' | capitalize:'all' }}    // outputs nothing 
    
    {{ null | capitalize }}     // outputs nothing 
    
    {{ null | capitalize:'all' }}   // outputs nothing 
    

    注意:请注意,溶液应该是基于纯的JS(没有csss),并且不必符合unicode,但应符合最佳实践,特别是:

    1. 没有第三方LIBRA应使用RY(如jQuery,下划线,lodash)
    2. AND代码应符合Typescript和ES6标准。

    注意:删除了那句“没有ES3和ES5代码”,因为这句话是造成一些混乱,并补充说,我得到的错误。

    +1

    是什么?你尝试至今:如下可以从你的模板(又名视图)使用管道?似乎又是一个“为我免费做”的“问题”除此之外......没有es3或es5 ......你在开玩笑吧? – GottZ

    +0

    根据定义,所有ES3和ES5代码**已经是** ES6。 – 2017-07-19 12:51:43

    +0

    是你在哪里卡住了大写的逻辑,或写了一个Angular管道的机制,或者两者都有/ – 2017-07-19 13:59:18

    回答

    -2

    我曾假设角2提供了一个“大写”管道(就像它提供了“大写”管道一样)。因此,要解决问题,创造了“利用”管道如下:

    1. 创建一个名为:capitalize.pipe.ts

    另外,如果您使用的角度,CLI,那么你可以使用命令生成上面的文件:纳克G管利用

    注意:您还需要修改您的modulg文件(如home.module.ts),包括新创建/生成的管道。

  • 修改新创建的/生成的文件如下:
  • import { Pipe, PipeTransform } from '@angular/core'; 
    
    // To be DRY, define a reusable function that converts a 
    // (word or sentence) to title case 
    
    const toTitleCase = (value) => { 
        return value.substring(0, 1).toUpperCase() + value.substring(1); 
        // alternately, can also use this: 
        // return value.charAt(0).toUpperCase() + value.slice(1); 
    }; 
    
    @Pipe({ 
        name: 'capitalize' 
    }) 
    export class CapitalizePipe implements PipeTransform { 
    
        transform(value: any, args?: any): any { 
        if (value) { 
         if (args === 'all') { 
         return value.split(' ').map(toTitleCase).join(' '); 
         } else { 
         return toTitleCase(value); 
         } 
        } 
        return value; 
        } 
    
    } 
    
  • 一旦完成以上,则
  • {{ 'heLlo woRld' | capitalize }} // outputs "HeLlo woRld" - Only "H" is capitalized

    {{ 'heLlo woRld' | capitalize:'all' }} // outputs "HeLlo WoRld" - Both "H" and "W" are capitalized

    +0

    这会因某些Unicode字符串而失败。 – 2017-07-19 12:53:47

    +0

    Unicode是不是我的使用案例的要求.. –

    +0

    太棒了。让我们编写代码,在将来某个时候以不可预见的方式破解代码,只要它是一些其他可以解决问题的可怜的笨蛋,而不是我们。顺便说一句,您在代码中使用了** lot **的ES3和ES5。例如,'if'和'return'语句都是ES3,'.map'是ES5。 – 2017-07-19 13:58:22

    相关问题