簡體   English   中英

angular 指令選擇器和 tslint 之間的沖突

[英]The conflict between angular directive selector and tslint

我正在使用 angular 4 指令來定義一個 angular 屬性指令。 但我想將此指令用作一個類。 我的定義是(它工作正常):

@Directive({
  selector: '.input-field'
})

這是根據角度選擇器定義( .class之一)

在此處輸入圖片說明

但是我收到了一個 tslint 錯誤,如下所示:

tslint 錯誤

有沒有辦法在不禁用 tslint 規則的情況下修復此錯誤?

在這種情況下,您的規則會阻止您使用類選擇器,因此您必須禁用它。 問題是是否全局禁用它?

您可以在代碼塊中禁用特定規則,如下所示:

/* tslint:disable: no-use-before-declare */

some code breaking no-use-before-declare rule

/* tslint:enable: no-use-before-declare */

或者您可以為下一行禁用整個 tslint

// tslint:disable-next-line
some code breaking all the rules
normal code

要在同一個項目中驗證多個前綴,您只需使用以下內容(在tslint.json文件中):

...
"component-selector": [true, "element", ["app", "my-awsome-prefix", "another-prefix"], "kebab-case"],
...

指令也一樣:

...
"directive-selector": [true, "attribute", ["app", "myDirectivePrefix"], "camelCase"],
...

我遇到了同樣的錯誤並在GitHub 上打開了一個問題。 這是我得到的答案:

雖然 Angular 確實支持指令的類選擇器,但這個特性應該只在特殊情況下使用,因為它很難理解模板的哪些部分是常規類,哪些是指令。 這就是為什么此語法是 tslint 警告而不是編譯錯誤的原因。

如果您堅持使用這種選擇器樣式,您可以更改 tslint 配置,或者在代碼中使用 tslint 忽略注釋作為調用站點的前綴,但是如果您堅持使用屬性選擇器,您將讓您和其他人的生活更輕松。

這不是很令人滿意,但似乎沒有辦法解決。

就我而言,問題在於以下數組類型:

public dateFormats: Array<{ format: string, eq: string }> = [...];

不使用通用語法修復了錯誤。

我肯定會考慮從tslint遷移到eslint因為對 Angular CLI 的支持已停止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM