我们想使用原理图来生成一个功能模块,其中包含我们不断生成的组件。
我已经开始关注本教程:https://medium.com/@michael.warneke/merging-custom-angular-schematics-c14a303f63b6
但是当我创建__name@dasherize@singularize__.module.ts
文件并尝试构建项目时,出现TS编译错误。
这是我的文件的样子:
import { ModuleWithProviders, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
@NgModule({
imports: [
CommonModule,
],
declarations: [],
providers: [],
entryComponents: []
})
export class <%= classify(name) %>Module {
static forRoot(): ModuleWithProviders {
return {
ngModule: <%= classify(name) %>Module,
providers: []
};
}
}
这是错误:
错误TS6133:声明了'ModuleWithProviders',但从未读取其值。
答案 0 :(得分:0)
从您的帖子中看来,这是一个编译时错误,即npm run build
,而不是世代时错误,即ng new CustomSchematic --collection my-custom-schematic
。
我看到的最常见的罪魁祸首是Typescript对您的原理图资产运行其验证规则。在这种情况下,我希望您的tsconfig.json
具有以下属性和值"noUnusedLocals": true
。将该属性设置为false可能不是一个好的长期策略,因为这将意味着您的所有原理图应用程序代码也不再执行该验证规则。
相反(以及我在projects上选择执行的操作)是将以下属性添加到tsconfig.json
文件中:
"exclude": [
"src/*/files/**/*"
]
这将正确排除逻辑示意图集合中每个逻辑示意图的files
文件夹下的所有资产。
/src
/ng-new
/files
custom-asset.ts
custom-asset.html
index.ts
index_spec.ts
/custom-service
/files
custom-asset.ts
index.ts
index_spec.ts
我无法完全复制您的问题,因此,如果您有公共回购链接,可以共享它。但是,当我删除excludes
中的tsconfig.json
设置时,我会从编译转到大量Typescript错误,因此我确信这是正确的方向。
作为最后的提示,如果您使用VS代码并显示问题面板,则可以使用!src/*/files/**/*
文件路径来应用相同的错误抑制策略。