angular2 tslint uyarılarını durdurmak için bileşenin varsayılan önekini değiştirme


142

Angular cli kullanarak Angular 2 uygulaması oluşturduğumda. Varsayılan bileşen önekim AppComponent için uygulama köküdür. Şimdi, seçiciyi başka bir şeye değiştirdiğimde "abc-root" diyorum

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

vscode beni uyarıyor,

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

Yanıtlar:


285

İki düzeltmeyi tslint.json ve .angular-cli.json üzerinde değiştirmeniz gerekiyor, varsayalım myprefix :

Tslint.json dosyasında aşağıdaki 2 özniteliği değiştirin:

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

"app" i "myprefix" olarak değiştir

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

Angular.json dosyasında yalnızca nitelik önekini değiştirin: (6'dan küçük açısal sürümlerde, dosya adı .angular-cli.json'dur)

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

"app" i "myprefix" olarak değiştir

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

@Salil Junior'ın işaret ettiği gibi birden fazla önek gerekiyorsa :

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

Açısal cli kullanarak yeni bir proje oluşturuyorsanız bu komut satırı seçeneğini kullanın

ng new project-name --prefix myprefix

2
Ayrıca ng generate componentgüncelleştirmeden sonra bile bir uyarı var tslint.json: Bu uyarı kurtulmak You are using different prefix from app, you might get lint errors. Please update "tslint.json" accordingly.için apps.prefixözelliği güncellemek zorunda kaldı .angular-cli.json.
natchiketa

Yukarıdaki yöntemleri denedim ama hala hata alıyorum - [tslint] Bileşen "PrgAxcShiftChartComponent" seçici "app" ( angular.io/styleguide#style-02-07 ) öneki (bileşen seçici) olmalıdır. Lütfen yardım et. Seçiciyi şu şekilde kullanarak: 'prg-axc-shift-chart',
ManZ

Bir öneki zorlamak istemiyor, ancak yine de camelCase'i zorlamak istiyorsanız ne olacak? Bu mümkün mü? Dizi sözdizimini kullandım ve buna boş bir dize ekledim ve işe yaradı, ancak bunun ideal yol olup olmadığından emin değilim.
ezmek

11
Açısal 6'da , bileşen ve yönerge seçici kurallarını içeren ek bir tslint.jsondosya bulunabileceğini lütfen unutmayın <your-project>/src/tslint.json. Yukarıdaki düzeltmeyi uyguladıysanız ve hala sizin için çalışmıyorsa, bu dosyanın genel yapılandırmanızı geçersiz kılmadığından emin olun. ( github.com/mgechev/codelyzer/issues/620#issuecomment-394131604 )
Simon

19
  1. angular-cli.jsonAçılan klibi bileşenleri oluşturmak için kullanacak şekilde "prefix": "defaultPrefix" öğenizi ayarlayın .
  2. Ajust şöyle tslint.json:

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

16

Aslında, Açısal Klip ile angular-cli.jsonkök uygulamada bulunan "uygulamalar" dizisinin içindeki "önek" etiketini değiştirebilirsiniz .

Bunun gibi "TheBestPrefix" için değiştirme.

"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 kullanarak yeni bir bileşen oluşturduğunuzda ng g component mycomponent , bileşen etiketi aşağıdaki ada sahip olacaktır"TheBestPrefix-mycomponent"


ancak bu, bazı bileşenlerin temel uygulamanın önekinden farklı bir önekle cli aracılığıyla oluşturulduğu yeri düzeltmez
user292701

1
WebStorm için bu benim için işe yaramadı. Soruda belirtildiği gibi uyarıyı önlemek için tslint.json değiştirmek zorunda kaldı. Angular-cli.json dosyasının değiştirilmesi yalnızca yeni bileşenler / yönergeler oluşturulmasına yardımcı olur.
camden_kid

16

Daha angular 6/7sonra tslint.json, /srcklasörünüzün içinde tslist, bileşen ve yönergelerinizin kurallarını barındıran bir iç kısım olacaktır .

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

Bu dosyada değişiklik yapılması sorunu çözecektir.


2
Ya da kaldırarak ana tslint.jsondosyayı geçersiz kılmayı durdurur .
Zarepheth

Nasıl değiştirilir? Değişiklikten önce veya sonra gösterdiğiniz şey mi?
Paul Rooney

@PaulRooney , direktif için önek ve bileşenler için aynı olacak directive-selectoreklediğim için görebilirsiniz"directivePrefix"
Aniruddha Das

Bu, Açısal 8'de gitti mi?
eflat

0

@Aniruddha, açısal 7'deki değişiklikleri işaret ederek:

oluşturmak tslint.jsoniçinde src/app/shareduzatmak için app/tslint.json:

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

Bir şey - app.component.spec dosyasında bir bileşeni paylaşılan modülden alay ederseniz, alay seçicinizin 'app' ile başlamak yerine 'paylaşılan' ile başlayacağından şikayet eder. Sanırım bu mantıklı - geldikleri andan itibaren modüllerimde alaylarımı yaratmalıyım.


-1

tslint.json

"bileşen seçici": [true, "element", "app", "kebab-case"]

bu 'kebab-case' herhangi bir bileşen seçiciyi bu '-' kutuyla birlikte olmaya zorlar.

örneğin ' app-test ', ' app-my ' gibi bir seçiciye sahip olabilirsiniz .

Ve hata endişeniz kadarıyla, örnekte bahsettiğim gibi, bileşen seçiciyi 'app' ile başlatmalısınız.

Sorununuzu çözmesine rağmen tslint.json'da herhangi bir değişiklik yapmanız gerektiğini düşünmüyorum, ancak tslint'te değişiklik yapmak iyi bir uygulama değil.

Teşekkürler

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.