使用Angular原理图创建新模块

时间:2018-11-05 12:07:21

标签: angular angular-cli angular-schematics

我们想使用原理图来生成一个功能模块,其中包含我们不断生成的组件。

我已经开始关注本教程: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',但从未读取其值。

1 个答案:

答案 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/**/*文件路径来应用相同的错误抑制策略。

Suppress TS errors in schematic assets in VS Code