簡體   English   中英

從客戶端到后端的Angular 2和單向綁定

[英]Angular 2 and one-way binding from the client to the backend

如果我使用方括號,則綁定將像這樣從后端到客戶端。

<div>
  <span>Name</span>
  <input type="text" placeholder="Konrad" [value]="name">
</div>

我要正好相反,要么向后單向,要么至少向兩邊開。 我嘗試了以下兩種方法,但都沒有將更改從正面傳達到背面的私有字段。

<div>
  <span>Name</span>
  <input type="text" placeholder="Konrad" (change)="name">
</div>

<div>
  <span>Name</span>
  <input type="text" placeholder="Konrad" [(change)]="name">
</div>

我想念什么?

目的是讓輸入框為空(從而顯示占位符的值),並且一旦用戶鍵入內容,便可以訪問后面的值。

我想我可以使用標記,並通過@viewChild引用該組件。 我也可以在(change)=updateName($event)上觸發一個事件,但是在我看來,這兩者似乎都有些怪異,而不是最佳實踐。

使用[(ngModel)]而不是[(change)]

<div>
  <span>Name</span>
  <input type="text" placeholder="Konrad" [(ngModel)]="name">
</div>

這提供了雙向綁定。 這意味着輸入字段將顯示name的值,但同時在用戶鍵入字段時更新name

初始化name=''; 在組件中,您將獲得想要的效果。

如果您需要觸發函數nameChanged() ,請添加ngModelChange

<div>
  <span>Name</span>
  <input type="text" placeholder="Konrad" [(ngModel)]="name" (ngModelChange)="nameChange()">
</div>

參考: https ://angular.io/docs/ts/latest/guide/template-syntax.html#!#event-binding(搜索ngModel)

暫無
暫無

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

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