-1

我正在按照这里的教程构建一个简单的角度示意图模板。一切顺利。本教程使用辅助函数 ( dasherize) 将文件名AwesomeWraphello-awesome-wrap.

hello-__name@dasherize__

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

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

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

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

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

4

3 回答 3

2

Angular Schematics Devkit 包中目前没有 lowercase

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

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

于 2019-05-17T08:12:07.770 回答
0

我只能想象他们转变dasherize__require('dasherize')(__). __文件名显然在哪里。Soo,我想我们需要找到一个为你做小写的包:

npm install lower-case

我猜你可以将其用作:

view-__name@lower-case__.ts
于 2019-05-17T08:05:04.623 回答
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 {

}
于 2021-03-19T11:51:54.193 回答