angular2コンポーネントのデフォルトのプレフィックスを変更してtslint警告を停止する方法


142

Angular CLIを使用してAngular 2アプリを作成するときのようです。私のデフォルトのコンポーネント接頭辞はAppComponentのapp-rootです。ここで、セレクターを別のものに変更すると、「abc-root」と言います

@Component({
  selector: 'abc-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

vscodeは私に警告します、

[tslint] The selector of the component "AppComponent" should have prefix "app"

回答:


285

あなたがに変更したいとし、2つのファイルtslint.jsonと.angular-cli.jsonを変更する必要がmyprefix

tslint.jsonファイルで、次の2つの属性を変更するだけです。

"directive-selector": [true, "attribute", "app", "camelCase"],
"component-selector": [true, "element", "app", "kebab-case"],

「app」を「myprefix」に変更します

"directive-selector": [true, "attribute", "myprefix", "camelCase"],
"component-selector": [true, "element", "myprefix", "kebab-case"],

angular.jsonファイルで、属性プレフィックスを変更するだけです (6未満の角度バージョンの場合、ファイル名は.angular-cli.jsonです)。

"app": [
  ...
  "prefix": "app",
  ...

「app」を「myprefix」に変更します

"app": [
  ...
  "prefix": "myprefix",
  ...

@Salil Juniorが指摘するように、複数のプレフィックスが必要な場合:

"component-selector": [true, "element", ["myprefix1", "myprefix2"], "kebab-case"],

Angular CLIを使用して新しいプロジェクトを作成する場合は、このコマンドラインオプションを使用します

ng new project-name --prefix myprefix

2
私はまた、から警告を得たng generate componentとしても更新後tslint.jsonYou are using different prefix from app, you might get lint errors. Please update "tslint.json" accordingly.私は更新しなければならなかったapps.prefixにプロパティを.angular-cli.jsonその警告を取り除くために。
なちけた2017年

上記の方法を試しましたが、まだエラーが発生します-[tslint]コンポーネントのセレクター「PrgAxcShiftChartComponent」には、接頭辞「app」(angular.io/styleguide#style-02-07)(component-selector)が必要です。助けてください。セレクターとしての使用: 'prg-axc-shift-chart'、
ManZ

プレフィックスを強制したくないが、キャメルケースを強制したい場合はどうなりますか?それは可能ですか?私は配列構文を使用して空の文字列を追加しましたが、それは機能するように見えましたが、それが理想的な方法であるかどうかはわかりません。
クラッシュ

11
Angular 6 では、コンポーネントとディレクティブセレクタールールを含む追加のtslint.jsonファイルが見つかり<your-project>/src/tslint.jsonます。上記の修正を適用しても問題が解決しない場合は、このファイルがグローバル構成を上書きしていないことを確認してください。(github.com/mgechev/codelyzer/issues/620#issuecomment-394131604
サイモン

19
  1. angular-cli.json: "prefix": "defaultPrefix"を調整して、angular-cliがコンポーネントの生成に使用するようにします。
  2. Ajust tslint.jsonこのように:

    "directive-selector": [
      true,
      "attribute",
      ["prefix1", "prefix2", "prefix3"],
      "camelCase"
    ],
    "component-selector": [
      true,
      "element",
      ["prefix1", "prefix2", "prefix3"],
      "kebab-case"
    ],
    

16

実際、Angular Cliを使用angular-cli.jsonすると、ルートアプリにあるの「apps」配列内の「prefix」タグを変更できます。

このように "TheBestPrefix"に変更します。

"apps": [
  {
    "root": "src",
    "outDir": "dist",
    "assets": [
      "assets",
      "favicon.ico"
    ],
    "index": "index.html",
    "main": "main.ts",
    "test": "test.ts",
    "tsconfig": "tsconfig.json",
    "prefix": "TheBestPrefix",
    "mobile": false,
    "styles": [
      "styles.css"
    ],
    "scripts": [],
    "environments": {
      "source": "environments/environment.ts",
      "dev": "environments/environment.ts",
      "prod": "environments/environment.prod.ts"
    }
  }
]

CLIを使用して新しいコンポーネントを生成するとng g component mycomponent 、コンポーネントタグは次の名前になります"TheBestPrefix-mycomponent"


ただし、一部のコンポーネントが基本アプリケーションのプレフィックスとは異なるプレフィックスでcliを介して生成された場所は修正されません
user292701

1
WebStormの場合、これは私にはうまくいきませんでした。質問に記載されている警告を回避するためにtslint.jsonを変更する必要がありました。angular-cli.jsonの変更は、新しいコンポーネント/ディレクティブの生成にのみ役立ちます。
camden_kid

16

angular 6/7以降があるでしょうtslint.json、あなたの内側に/src保持しているフォルダtslistコンポーネントとディレクティブのルールを。

{
    "extends": "../tslint.json",
    "rules": {
        "directive-selector": [
            true,
            "attribute",
            "directivePrefix",
            "camelCase"
        ],
        "component-selector": [
            true,
            "element",
            "compoenent-prefix",
            "kebab-case"
        ]
    }
}

そのファイルを変更すると、問題が修正されます。


2
または削除して、メインtslint.jsonファイルの上書きを停止します。
ザレフェス

どうやって変える?変更前または変更後に何を表示していますか?
Paul Rooney

@PaulRooneyは、ディレクティブのプレフィックスであり、コンポーネントでも同じになる、directive-selector追加したIで確認でき"directivePrefix"ます
Aniruddha Das

これはAngular 8でなくなりましたか?
eflat

0

角度7の変更を指摘している@Aniruddhaに感謝します。

を作成tslint.jsonsrc/app/sharedて拡張しapp/tslint.jsonます:

{
  "extends": "../../tslint.json",
  "rules": {
    "directive-selector": [
      true,
      "attribute",
      "shared",
      "camelCase"
    ],
    "component-selector": [
      true,
      "element",
      "shared",
      "kebab-case"
    ]
  }
}

1つのこと-app.component.specで共有モジュールのコンポーネントをモック化すると、モックセレクターが「app」ではなく「shared」で始まるというメッセージが表示されます。私はそれが理にかなっていると思います-私はモックをモジュールから作成しなければなりません。


-1

tslint.json

"component-selector":[true、 "element"、 "app"、 "kebab-case"]

この「ケバブケース」は、コンポーネントセレクターをこの「-」ケースに強制します。

たとえば、 ' app-test '、 ' app-my 'のようなセレクターをこのように持つことができます。

そして、あなたのエラーに関する限り、例で述べたように「app」でコンポーネントセレクターを開始する必要があります。

tslint.jsonを変更する必要はないと思いますが、問題は解決しますが、tslintを変更することはお勧めしません。

ありがとう

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.