ngModel 雙向繫結(初學者易錯點)
阿新 • • 發佈:2019-02-18
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
屬性。