ng form組件(表單)


tip:

數據的雙向綁定(數據的雙向綁定只是針對表單)
實現數據的雙向綁定需要在app_module.ts(根模塊)中進行注冊一些東西
import {FormsModule} from '@angular/forms';
@NgModule中的imports中進行聲明一下FormsModule
 
html:
  
  <div class="form">
    <p>人員登錄系統</p>
    <ul>
      <li>姓名:<input type="text" [(ngModel)]="peopleInfo.username"></li>
      <li>寫別:<input type="radio" name="sex" value="1" [(ngModel)]="peopleInfo.sex"><label [for]="sex1">男</label>
            <input type="radio" name="sex" value="2" [(ngModel)]="peopleInfo.sex"><label [for]="sex2">女</label>
      </li>
      <li>
        城市:<select [(ngModel)]="peopleInfo.city">
            <option *ngFor="let item of peopleInfo.citylist" [value]="item">{{item}}</option>
          </select>
      </li>
      <li>愛好:<span *ngFor="let item of peopleInfo.hobby;let key=index">          
            <input type="checkbox" [id]="'checked'+key" [(ngModel)]="item.checked">
            <label [for]="'checked'+key">{{item.title}}</label>
          </span>
      </li>
      <li>描述:<textarea [(ngModel)]="peopleInfo.mark">{{mark}}</textarea></li>
      <li><button (click)="dosubmit();" class="submit">提交</button></li>
    </ul>
  </div>
 
ts中:
  
  public peopleInfo:any={
    username:"",
    sex:"1",
    city:"北京",
    citylist:["北京","上海","深圳"],
    hobby:[
      {title:"吃飯",checked:true},
      {title:"睡覺",checked:false},
      {title:"打豆豆",checked:false}],
    mark:""
    };
 
dosubmit(){
console.log(this.peopleInfo);
}

select 難點詳解:
    [(ngmodle)]是雙向綁定的寫法,propleInfo.sex在ts中的值為1,默認為男,
    (判斷peopleInfo。sex是否為1,是則為選中,判斷的依據是peopleInfo.sex的值是否和當前的value的值相等,相等則為選中,反之未選中),
    當點擊為女的時候,將女的值傳遞給sex
 
    select中:*ngFor="let item of peopleInfo.citylist" 循環獲取到對象中的城市列表中的值,{{item}}是為循環出來的值,
    [value]="item"是為:value屬性的值為item ,此時的value的值是和循環出來的值為相同。

    [(ngModel)]="peopleInfo.city" 綁定city是因為城市選項中綁定的一些值都是在select的時候有一個值,故此要給select標簽進行一次綁定數據,
    當發現peopleInfo.city的值和option中的哪一個[value]="item"相等時。如果相等就選中那個option,同理,當option改變的時候,也會重新在賦值
    給peopleInfo.city。同時,當我們在option選擇一個值的時候也是最終顯示在select的標簽之中,所以在此select進行數據綁定也就行得通了,在頁面中看不到的可以通過
    console.log來查看
 
checkbox 難點詳解
    *ngFor="let item of peopleInfo.hobby;let key=index"循環peopleInfo對象下的hobby中的值,key=index是為索引,[id]和[for]的值是一樣的是為了進行對應
    所以寫成:[for]="'checked'+key",[id]="'checked'+key"都是為了拿到chedked值,[(ngModel)]="item.checked"是為了檢測是否選中,在愛好選項中只有第一個值為true,
    其他為false,但是只要點中一個就要進行改變其checked的值,所以這是時候就會把itemed.checked的值賦值給ts中的checked,從而實現雙向綁定。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM