5双向数据绑定

Angula中双向数据绑定只适用于表单,即视图改变会影响模型,模型改变会影响视图。要想使用双向数据绑定,首先要在app.module.ts里引入FormsModule

import {FormsModule} from "@angular/forms";

引入后还要在@NgModule的imports里声明FormsModule
然后就可以使用了,比如

<input type="text" [(ngModel)]="name" placeholder="请输入name"/><br />
{{name}}<br />

学习了如何使用双向数据绑定,那么就可以用利用双向数据绑定做个简单的例子了,能够更好的运用双向数据绑定,这个例子也是跟着教程上做的
先看一下效果:
在这里插入图片描述引入组件组件,创建什么的前面说过,就不讲了,具体实现代码如下:
前台(.html):

<div class="userList">
  <h3>登记系统</h3>
  <ul>
    <li>
      姓名:
      <input type="text" id="name" [(ngModel)]="userInfo.userName" />
    </li>

    <li>
      性别:
      <input type="radio" value="1" name="sex" [(ngModel)]="userInfo.sex" />男
      <input type="radio" value="0" name="sex" [(ngModel)]="userInfo.sex" />女
    </li>

    <li>
      部门:
      <select [(ngModel)]="userInfo.department">
        <option [value]="i" *ngFor="let i of departmentList">{{i}}</option>
      </select>
    </li>

    <li>
      爱好:
      <span *ngFor="let i of userInfo.hobby" id="hobby">
        <input type="checkbox" [(ngModel)]="i.checked" />{{i.content}}
      </span>
    </li>

    <li>
      其他:
      <textarea cols="30" rows="5" [(ngModel)]="userInfo.others"></textarea>
    </li>

  </ul>
  <input type="button" value="获取表单数据" (click)="getName()" id="myBtn"/>
  <pre>
  <!--直接userInfo会输出object,需要用json格式化-->
  {{userInfo|json}}
  </pre>
</div>

后台数据和方法(.ts)

departmentList=[
    "DEV",
    "QA",
    "PM",
    "ISO"
  ]
 

  userInfo: any = {
    userName: "Lanbo",
    sex: "1",
    department: "DEV",
    hobby: [
      {
        checked: true,
        content:"写代码"
      },
      {
        checked: false,
        content:"驾驶"
      },
      {
        checked: false,
        content:"看电影"
      }
    ],
    others:"Angular8"
  }


//方法写在ngOnInit里
getName() {
    //1:通过dom获取表单内容
    //let domName: any = document.getElementById("name");
    //console.log(domName.value);

    //推荐使用双向绑定
    console.log(this.userInfo);

样式(.css)

ul,ol{
  /*不显示小圆点*/
  list-style-type:none;
  line-height:40px;
}


.userList {
  width: 400px;
  border: 1px solid gray;
  /*居中*/
  margin: 0 auto;
  
}
/*设置li里的input样式*/
#name{
  width:80%;
  height:25px;
}


#myBtn{
  float:right;
  height:25px;
  margin-right:20px;
  margin-bottom:-20px;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值