1. 程式人生 > >ngModel 雙向繫結(初學者易錯點)

ngModel 雙向繫結(初學者易錯點)

ngModel 大致介紹:

NgModel指令資料繫結常用於開發表單的場景,資料繫結如下:

<input [(ngModel)]="model.name">
這種常用的寫法類似一種語法糖,其實相當於如下寫法:
<input
  [ngModel]="model.name"
  (ngModelChange)="model.name=$event">

注意點:

在學習過程中遇到了一些問題,設計表單時,如下程式碼就會報錯:

<form >
<input type="text"  [(ngModel)]="model.name" required>
<p>model.name:{{model.name}}</p>
</form>

報錯資訊:

 ERROR Error: If ngModel is used within a form tag, either the name attribute must be set or the form
      control must be defined as 'standalone' in ngModelOptions.

      Example 1: <input [(ngModel)]="person.firstName" name="first">
      Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">


解決方案:

報錯給出了2種解決方案,但一般常用第一種方案,就是必須加上name屬性,修改如下:

<form >
<input type="text" name="name"  [(ngModel)]="model.name" required>
<p>model.name:{{model.name}}</p>
</form>

經檢視Angular官方文件,敘述如下:

Defining a name attribute is a requirement when using [(ngModel)] in combination with a form.

當在表單中使用[(ngModel)]時,必須要定義name屬性。