angular2 วิธีเปลี่ยนส่วนนำหน้าเริ่มต้นของส่วนประกอบเพื่อหยุดคำเตือน tslint


142

ดูเหมือนว่าเมื่อฉันสร้างแอป Angular 2 โดยใช้ Angular cli คำนำหน้าส่วนประกอบเริ่มต้นของฉันคือ app-root สำหรับ AppComponent ตอนนี้เมื่อฉันเปลี่ยนตัวเลือกเป็นอย่างอื่นพูดว่า "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

คุณต้องแก้ไขสองไฟล์ tslint.json และ. triangle-cli.json สมมติว่าคุณต้องการเปลี่ยนเป็นmyprefix :

ในไฟล์ tslint.json เพียงแก้ไขแอตทริบิวต์ 2 ต่อไปนี้:

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

เปลี่ยน "แอพ" เป็น "myprefix"

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

ในไฟล์ angular.json เพียงแก้ไขคำนำหน้าแอตทริบิวต์: (สำหรับรุ่นเชิงมุมน้อยกว่า 6 ชื่อไฟล์คือ. triangle-cli.json)

"app": [
  ...
  "prefix": "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.json: You are using different prefix from app, you might get lint errors. Please update "tslint.json" accordingly.ฉันต้องอัปเดตapps.prefixคุณสมบัติใน.angular-cli.jsonเพื่อกำจัดคำเตือนนั้น
natchiketa

ฉันลองวิธีข้างต้นแล้ว แต่ยังพบข้อผิดพลาด - [tslint] ตัวเลือกขององค์ประกอบ "PrgAxcShiftChartComponent" ควรมีคำนำหน้า "แอป" ( angular.io/styleguide#style-02-07 ) (ตัวเลือกส่วนประกอบ) กรุณาช่วย. ใช้ตัวเลือกเป็น: 'prg-axc-shift-chart',
ManZ

ถ้าคุณไม่ต้องการบังคับใช้คำนำหน้า แต่ยังต้องการบังคับใช้ camelCase ล่ะ? เป็นไปได้ไหม? ฉันใช้ไวยากรณ์อาร์เรย์และเพิ่มสตริงว่างลงในนั้นและดูเหมือนว่าจะทำงานได้ แต่ไม่แน่ใจว่าเป็นวิธีที่เหมาะหรือไม่
บดขยี้

11
โปรดทราบว่าใน Angular 6 tslint.jsonจะพบไฟล์เพิ่มเติม<your-project>/src/tslint.jsonซึ่งประกอบด้วยส่วนประกอบและกฎตัวเลือกคำสั่ง หากคุณได้ใช้การแก้ไขด้านบนและยังไม่สามารถใช้งานได้โปรดตรวจสอบให้แน่ใจว่าไฟล์นี้ไม่ได้แทนที่การกำหนดค่าส่วนกลางของคุณ ( github.com/mgechev/codelyzer/issues/620#issuecomment-394131604 )
Simon

19
  1. ปรับของคุณangular-cli.json: "คำนำหน้า": "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ซึ่งตั้งอยู่บนแอปรูท

เปลี่ยนเป็น "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ไฟล์หลัก
Zarepheth

เปลี่ยนได้อย่างไร คุณกำลังแสดงอะไรก่อนหรือหลังการเปลี่ยนแปลง?
พอลรูนีย์

@PaulRooney คุณสามารถดูสำหรับdirective-selectorฉันเพิ่ม"directivePrefix"ซึ่งจะเป็นคำนำหน้าสำหรับคำสั่งและเหมือนกันสำหรับส่วนประกอบ
Aniruddha Das

สิ่งนี้หายไปใน Angular 8 หรือไม่?
eflat

0

ขอบคุณ @Aniruddha ชี้ให้เห็นการเปลี่ยนแปลงในเชิงมุม 7:

สร้างtslint.jsonในsrc/app/sharedเพื่อขยายapp/tslint.json:

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

สิ่งหนึ่ง - หากใน app.component.spec คุณจำลองส่วนประกอบจากโมดูลที่ใช้ร่วมกันมันจะบ่นว่าตัวเลือก mocks ของคุณเริ่มต้นด้วย 'แชร์' แทนที่จะเริ่มด้วย 'แอป' ฉันคิดว่าเหมาะสม - ฉันควรสร้าง mocks ของฉันในโมดูลจากที่พวกเขามา


-1

tslint.json

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

'เคบับตัวเล็ก' บังคับให้ตัวเลือกส่วนประกอบใด ๆ อยู่ในเคสนี้ '-'

ตัวอย่างเช่นคุณสามารถมีตัวเลือกเช่น ' แอปทดสอบ ', ' แอปของฉัน ' เช่นนี้

และเท่าที่เกี่ยวกับข้อผิดพลาดของคุณคุณต้องเริ่มตัวเลือกส่วนประกอบด้วย 'แอป' ตามที่ฉันได้กล่าวถึงในตัวอย่าง

ฉันไม่คิดว่าคุณควรทำการเปลี่ยนแปลงใด ๆ ใน tslint.json แม้ว่ามันจะแก้ไขปัญหาของคุณได้ แต่มันก็ไม่ใช่วิธีที่ดีในการเปลี่ยนเป็น tslint

ขอบคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.