我正在按照tutorial here建立一个简单的角度示意图模板。一切顺利。本教程使用帮助函数(dasherize
)将文件名从AwesomeWrap
转换为hello-awesome-wrap
。
hello-__name@dasherize__
我想在自己的实现中更改此功能,以仅确保文件名小写,因此AwesomeWrap
应该为awesomewrap
。
尽管似乎没有很好地记录此功能(或者我找不到),但是我找不到用于此功能的列表。我尝试创建文件view-__name@lowercase__.ts
,但是lowercase
似乎没有可用的功能。
我运行schematics .:sensor --name=test
时收到错误消息:
错误:未定义管道“小写”。
那么正确的语法是什么?有可用这种方式执行的可用转换列表吗?
答案 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 {
}