[英]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]="..."
它會檢查是否
x
的指令/組件可用於當前視圖 '[x]'
的屬性選擇器 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.