Селектор директивы TrimInputDirective должен иметь один из префиксов - Angular Directive Linting Issue - PullRequest
0 голосов
/ 31 мая 2018

Я написал директиву, которая нацелена на ввод HTML с использованием селекторов ввода CSS следующим образом (я сократил код для удобства чтения):

const TRIM_VALUE_ACCESSOR: any = {
  provide: NG_VALUE_ACCESSOR,
  useExisting: forwardRef(() => TrimInputDirective),
  multi: true
};

@Directive({
  selector: `
    input
    :not([type=checkbox])
    :not([type=radio])
    :not([type=password])
    :not([readonly])
    :not(.ng-trim-ignore)
    [formControlName],
  `,
  providers: [ TRIM_VALUE_ACCESSOR ]
})
export class TrimInputDirective extends DefaultValueAccessor {
 // do stuff...
}

Все это работает так, как я ожидаю, однако я заметил, чтомой линтинг дает мне следующую ошибку:

ОШИБКА: app / shared / directives / trim-input.directive.ts [18, 13]: у селектора директивы «TrimInputDirective» должна быть одна изпрефиксы «myapp, if, file, use» (https://angular.io/styleguide#style-02-08)

Теперь я не могу этого сделать, поскольку мой селектор не является определенным атрибутом, который я бы добавил к элементу HTML. Как можноЯ исправляю эту ошибку, не оборачивая свой код в /* tslint:disable */ и /* tslint:enable */ флаги комментариев?

Заранее большое спасибо

1 Ответ

0 голосов
/ 31 мая 2018

Существует несколько способов справиться с этим в зависимости от желаемых результатов.

Если вы хотите отключить этот тип проверки по всем направлениям, вы можете обновить файл tslint.json.Интересуют два свойства: directive-selector": false, "component-selector": false.Очевидно, что вы могли бы отключить одно или другое, если вы просто заинтересованы в устранении ошибок лингтинга для директив или компонентов.

В качестве альтернативы, эти свойства могут принимать список значений, поэтому вы можете обновить их до следующего значения:

"directive-selector": [
      true,
      "element",
      "myapp"
]

Если есть только несколько мест, где вы будете это делать, вы также можете использовать /* tslint:disable-next-line */ в своем коде, чтобы вам не приходилось отключать, а затем снова включать linting.Он будет игнорировать только строку, следующую за этим комментарием.

...