编写Angular原理图模板时“小写”的辅助功能是什么?

时间:2019-05-17 08:00:23

标签: angular typescript angular-cli angular-schematics

我正在按照tutorial here建立一个简单的角度示意图模板。一切顺利。本教程使用帮助函数(dasherize)将文件名从AwesomeWrap转换为hello-awesome-wrap

hello-__name@dasherize__

我想在自己的实现中更改此功能,以仅确保文件名小写,因此AwesomeWrap应该为awesomewrap

尽管似乎没有很好地记录此功能(或者我找不到),但是我找不到用于此功能的列表。我尝试创建文件view-__name@lowercase__.ts,但是lowercase似乎没有可用的功能。

我运行schematics .:sensor --name=test时收到错误消息:

  

错误:未定义管道“小写”。

那么正确的语法是什么?有可用这种方式执行的可用转换列表吗?

3 个答案:

答案 0 :(得分:2)

Angular Schematics Devkit软件包中目前没有 lowercase

您可以在此处查看所有受支持的功能:https://github.com/angular/angular-cli/blob/master/packages/angular_devkit/core/src/utils/strings.ts

如果需要小写功能,可以打开此文件的请求请求并添加它。

答案 1 :(得分:0)

我只能想象他们将dasherize__转换为require('dasherize')(__)__显然是文件名。如此,我想我们需要找到一个可以为您提供小写字母的软件包:

npm install lower-case

我想您可以将其用作:

view-__name@lower-case__.ts

答案 2 :(得分:0)

抱歉回复晚了。

在您的模板文件(例如:./files/__name@dasherize__.component.ts)文件中,只需使用 string.toLowerCase()

import { Component } from '@angular/core';

@Component({
  selector: "<%= name.toLowerCase() %>",
  template: `
  `,
})
export class <%= classify(name)%>Component {

}

如果你想像dasherize一样使用它,去index.ts

export function mySchematics(_options: Schema): Rule {
  return (tree: Tree, _context: SchematicContext) => {
    const sourceTemplates = url('./files');

    const sourceParametrizedTemplates = apply(sourceTemplates, [
      template({
        ..._options,
        ...strings,
        tolowercase
      })
    ]);

    return mergeWith(sourceParametrizedTemplates)(tree, _context);
  };
}

export function tolowercase(value: string): string {
  return value.toLowerCase();
}

然后你可以在文件夹或文件名中使用like:

__name@tolowercase__component.ts

也用在这样的模板中

import { Component } from '@angular/core';

@Component({
  selector: "<%= tolowercase(name) %>",
  template: `
  `,
})
export class <%= classify(name)%>Component {

}