编写Angular原理图模板时"lowercase"的辅助函数是什么?

What is the helper function for "lowercase" when writing an Angular schematic template?

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

hello-__name@dasherize__

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

这个功能似乎没有很好的文档记录(或者我找不到),我找不到可用功能的列表。我尝试创建一个文件 view-__name@lowercase__.tslowercase 似乎没有可用的功能。

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

Error: Pipe "lowercase" is not defined.

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

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

npm install lower-case

而且我想您可以将其用作:

view-__name@lower-case__.ts

Schematics Devkit 包中目前没有lowercase

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

如果您需要小写函数,您可以为此文件打开一个合并请求并添加它。

抱歉回答晚了。

在您的模板文件中(示例:./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 {

}