Подтвердить что ты не робот

Angular2 как изменить префикс по умолчанию компонента для остановки предупреждений tslint

Кажется, когда я создаю приложение 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"
4b9b3361

Ответ 1

Вам нужно изменить два файла tslint.json и.angular-cli.json, предположим, что вы хотите изменить на myprefix:

В файле tslint.json просто измените следующие 2 атрибута:

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

измените "приложение" на "мой префикс"

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

В файле angular.json просто измените префикс атрибута: (Для угловой версии менее 6 имя файла.angular-cli.json)

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

измените "приложение" на "мой префикс"

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

Если в этом случае вам понадобится более одного префикса, как указывает @Salil Junior :

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

Если вы создаете новый проект с использованием Angular Cli, используйте эту опцию командной строки

ng new project-name --prefix myprefix

Ответ 2

Собственно, с Angular Cli вы можете просто изменить тег "префикс" внутри массива "apps" на вашем 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"

Ответ 3

  • Откорректируйте префикс angular-cli.json: "prefix": "defaultPrefix", чтобы angular -cli использовал это для создания компонентов.
  • Ajust tslint.json вот так:

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

Ответ 4

Начиная с angular 6/7 tslint.json внутри вашей папки /src будет находиться tslint.json tslist правила tslist для вашего компонента и директивы.

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

Изменение в этом файле решит проблему.

Ответ 5

Для последних версий Angular CLI файл angular-cli.json был переименован в angular.json. Все остальное тоже самое.

Ответ 6

tslint.json

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

этот 'kebab-case' заставляет любой компонент выбора находиться в этом '-' случае.

например, у вас может быть селектор типа " app-test ", " app-my ", как это.

А что касается вашей ошибки, вы должны запустить селектор компонентов с "app", как я только что упомянул в примере.

Я не думаю, что вы должны вносить какие-либо изменения в tslint.json, хотя это решит вашу проблему, но не рекомендуется менять tslint.

Спасибо

Ответ 7

Благодаря @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 начинается с "shared", а не с "app". Я полагаю, что это имеет смысл - я должен создавать свои макеты в модуле, откуда они пришли.