169 votes

angular2 comment changer le préfixe par défaut d'un composant pour arrêter les avertissements de tslint

Il semble que, lorsque je crée une application Angular 2 en utilisant Angular cli. Mon préfixe de composant par défaut est app-Root pour AppComponent. Maintenant, quand je change le sélecteur pour quelque chose d'autre, disons "abc-Root"

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

vscode me prévient,

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

325voto

Nehu Points 99

Vous devez modifier deux fichiers tslint.json et .angular-cli.json, supposons que vous vouliez changer en monpréfixe :

Dans le fichier tslint.json, il suffit de modifier les 2 attributs suivants :

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

remplacez "app" par "myprefix".

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

Dans le fichier angular.json, modifiez simplement le préfixe de l'attribut : (Pour les versions d'angular inférieures à 6, le nom du fichier est .angular-cli.json)

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

remplacez "app" par "myprefix".

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

Si dans le cas où vous avez besoin de plus d'un préfixe comme @Salil Junior soulignez :

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

Si vous créez un nouveau projet en utilisant Angular cli, utilisez cette option de ligne de commande

ng new project-name --prefix myprefix

2 votes

J'ai également reçu un avertissement de ng generate component même après avoir mis à jour tslint.json : You are using different prefix from app, you might get lint errors. Please update "tslint.json" accordingly. J'ai dû mettre à jour le apps.prefix la propriété dans .angular-cli.json pour se débarrasser de cet avertissement.

0 votes

J'ai essayé les méthodes ci-dessus mais j'obtiens toujours l'erreur suivante : [tslint] Le sélecteur du composant "PrgAxcShiftChartComponent" devrait avoir le préfixe "app" ( angular.io/styleguide#style-02-07 ) (sélecteur de composants). Veuillez m'aider. Utilisation du sélecteur comme : 'prg-axc-shift-chart',

0 votes

Que se passe-t-il si vous ne voulez pas appliquer un préfixe, mais que vous voulez tout de même appliquer la camelCase ? Est-ce une possibilité ? J'ai utilisé la syntaxe du tableau et j'y ai ajouté une chaîne vide, ce qui semble fonctionner, mais je ne sais pas si c'est la méthode idéale.

22voto

user3765825 Points 341
  1. Ajustez votre angular-cli.json : "prefix" : "defaultPrefix" afin qu'angular-cli l'utilise pour générer des composants.
  2. Ajustage tslint.json comme ça :

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

19voto

Aniruddha Das Points 34

Pour angular 6/7 à partir de ce moment-là, il y aura un tslint.json à l'intérieur de votre /src qui contient les tslist pour votre composant et vos directives.

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

En modifiant ce fichier, le problème sera résolu.

2 votes

Ou le supprimer, pour qu'il cesse de remplacer le principal tslint.json fichier.

0 votes

Le changer comment ? Ce que vous montrez est-il avant ou après le changement ?

0 votes

@PaulRooney vous pouvez voir pour le directive-selector J'ai ajouté "directivePrefix" qui sera le préfixe de la directive et le même pour les composants.

16voto

Anderson Silva Points 319

En fait, avec Angular Cli, il suffit de changer la balise "prefix", à l'intérieur du tableau "apps" de votre angular-cli.json situé dans l'application Root.

En changeant pour "TheBestPrefix", comme ceci.

"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"
    }
  }
]

Lorsque vous générez un nouveau composant à l'aide du CLI, ng g component mycomponent la balise du composant aura le nom suivant "TheBestPrefix-mycomponent"

0 votes

Mais cela ne résout pas le cas où (volontairement) certains composants ont été générés via cli avec un préfixe différent de celui de l'application de base.

1 votes

Pour WebStorm, cela n'a pas fonctionné pour moi. J'ai dû modifier tslint.json pour éviter l'avertissement mentionné dans la question. Modifier angular-cli.json n'aide qu'à générer de nouveaux composants/directives.

2voto

alexfrize Points 338

Pour les dernières versions d'Angular CLI le fichier angular-cli.json a été renommé en angular.json. Tout le reste est identique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X