簡體   English   中英

Angular2組件單向綁定還是輸入?

[英]Angular2 component one-way binding or input?

在角度2中,如果我看到<element [x]='' ..> ,我怎么知道x是一個導致單向數據綁定的指令(例如[ngClass]或[nyStyle]),或者它是一個應用於此標記的Angular組件的輸入(組件配置中的輸入)?

我不認為你可以通過一些編碼技術來區分它們,但是

如果你只是想知道這[x]在這里做了什么? 然后


它可能在那里做三件事

1.這是一個角度指令,例如: [ngModel] [ngIf]

  • 要確認這一點,您可以在此處搜索屬性

2.這是一個自定義指令,例如: [directiveToConsoleLogTheContentOfAnInputField]

  • 要確認這一點,您必須了解您的自定義書面指示。

3.它只是<element>組件的輸入/輸出屬性或([oneWay] / [(twoWay)]綁定)

  • 要確認這一點,只需轉到<element>組件的.ts文件,看看它是否是輸入輸出屬性之一。

更新:有關詳細信息,請參閱@MarkRajcok的回答。 (是的,我不認為我知道的更好。)

語法不明確(如果你只是閱讀HTML模板),這是我不喜歡的。 我之前已經問過這個問題(還沒有答案): 為什么簡單的[myHighlight] =“...”適用於屬性指令?

假設[x]不是[style.x][attr.x] ,那么我相信[x]="..."總是表示輸入屬性數據綁定。 它有點棘手,因為如果輸入屬性是在使用屬性選擇器且它具有相同名稱( x )的指令/組件上定義的,那么它是: x [x]="..."的簡寫。 (我不喜歡速記語法,但我不能說我喜歡冗長的語法,這確實有用,不管怎樣。)

換句話說,當Angular看到/解析[x]="..."它會檢查是否

  1. 有一個名稱為x的指令/組件可用於當前視圖
  2. 它使用'[x]'的屬性選擇器
  3. 我假設它也檢查它是否有一個名為x的輸入屬性

如果以上都是真的,那么它使用指令/組件。
如果上述情況不成立,那么它會查看該element是否具有名為x的屬性。 如果不是,我們就會熟悉Can't bind to 'x' since it isn't a known native property錯誤。

Angular執行2(或3)步檢查的事實意味着語法不明確,因此我們必須在心理上執行相同的步驟來確定實際發生的事情。 我的朋友們,這就是為什么我不喜歡它。

暫無
暫無

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

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