Skip to content

Generated directive selector name should be camelcase #1216

Closed

Description

@Blasz
Version
$ ng --version
(node:20286) fs: re-evaluating native module sources is not supported. If you are using the graceful-fs module, please update it to a more recent version.
Could not start watchman; falling back to NodeWatcher for file system events.
Visit http://ember-cli.com/user-guide/#watchman for more info.
angular-cli: 1.0.0-beta.6
node: 6.2.1
os: linux x64
Repro steps

The following generate command produces a kebab case selector name instead of camelCase.

$ ng g directive shared/directives/wrap-if
(node:20210) fs: re-evaluating native module sources is not supported. If you are using the graceful-fs module, please update it to a more recent version.
Could not start watchman; falling back to NodeWatcher for file system events.
Visit http://ember-cli.com/user-guide/#watchman for more info.
installing directive
  create src/app/shared/directives/wrap-if.directive.spec.ts
  create src/app/shared/directives/wrap-if.directive.ts

src/app/shared/directives/wrap-if.directive.ts

import { Directive } from '@angular/core';

@Directive({
  selector: '[wrap-if]'
})
export class WrapIf {

  constructor() {}

}

As per the styleguide,

Do Use lower camel case for naming the selectors of our directives.

I've passed ng generate the name in kebab case because the README states so and follows the convention of passing the file name where file names should use dashes to separate words in the descriptive name.

I've read #424 and acknowledge that passing the name as camelCase to ng generate produces the correct selector but it is unintuitive and doesn't follow the README. I don't think we should make an exception to the convention of passing kebab case file names to ng generate.

Instead of not modifying the selector name at all for directives, I think they should be modified to be camelCase as per the styleguide.

Activity

  1. choeller commented on Aug 30, 2016

    @choeller

    As an addition according to the Style-Guide, the Selector for Directives should also take the prefix of the app into account. So I would assume

    ng g directive lower-case

    to create a Direktive with the selector

    [appLowerCase]
  2. filipesilva commented on Sep 20, 2016

    @filipesilva
    Contributor

    @Brocco can you weigh in?

  3. Brocco commented on Sep 24, 2016

    @Brocco
    Contributor

    The style guide does dictate camelCase for directive selectors and prefixing them with the application prefix. I will put together a PR for this.

    Reference: https://angular.io/docs/ts/latest/guide/style-guide.html#!#02-08

  4. added a commit that references this issue on Sep 24, 2016
    a5bd6ca
  5. added 2 commits that reference this issue on Sep 26, 2016
    ad4a61f
    97196b8
  6. added a commit that references this issue on Oct 2, 2016
    e8af222
  7. added a commit that references this issue on Oct 3, 2016
    5bdc739
  8. nukec commented on Jun 12, 2019

    @nukec

    what if you prefix is kebab case? app-something, then you are doomed. why is component kebab case and directive camel case in style guide? can't we just use kebab case for everything consistently?

  9. angular-automatic-lock-bot commented on Sep 9, 2019

    @angular-automatic-lock-bot

    This issue has been automatically locked due to inactivity.
    Please file a new issue if you are encountering a similar or related problem.

    Read more about our automatic conversation locking policy.

    This action has been performed automatically by a bot.

  10. locked and limited conversation to collaborators on Sep 9, 2019
  11. added a commit that references this issue on May 29, 2026
    036d469
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions