Angular开发(八)-关于表单的基本认识

说明:在angular中表单会默认使用交给angular去处理,对于传统表单中写的action或者method都不生效了,如果不想交给angular处理就要在表单中加入ngNoForm属性

一、不使用form标签的情况下

<div>
    <p>
        <input type="text" minlength="3" maxlength="6" required [(ngModel)]="formdata.username" name="username"/>
        <span [hidden]="username2.valid || username2.pristine">你输入有错误</span>
    </p>
    <p>
        <input type="radio" [(ngModel)]="formdata.sex" name="sex" value="男" /><input type="radio" [(ngModel)]="formdata.sex" name="sex" value="女" /></p>
    <p>
        <select name="selectoption" [(ngModel)]="interest" (ngModelChange)="change($event)">
            <option *ngFor="let item of interests" [ngValue]="item.value">{{item.display}}</option>
        </select>
    </p>
    <!--使用局部模板变量时时显示输入数据-->
    <p>{{username2.value}}</p>
</div>
//ts文件
interests: any[] = [
    {value: "guangdong", display: "广东"},
    {value: "jiangxi", display: "江西"},
    {value: "hunan", display: "湖南"}
  ];
  interest: any;
  hobby: boolean = true;

  change(event: any) {
    console.log(event);
  }

二、使用form标签的时候就可以使用表单提交方法ngSubmit提交数据

说明:
1、必须要写name属性,angular会根据name来设置输出对象的key
2、每个表单中必须要加入ngModel属性,如果要进行初始化值的时候就要用到双向绑定[(ngModel)]="sex"

<form #firstrForm="ngForm" (ngSubmit)="firstForm(firstrForm.value)">
    <p>
        <input type="text" minlength="3" maxlength="6" required ngModel name="username" #username2="ngModel"/>
        <span [hidden]="username2.valid || username2.pristine">你输入有错误</span>
    </p>
    <p>
        <input type="radio" ngModel name="sex" value="男" /><input type="radio" ngModel name="sex" value="女" /></p>
    <p>
        <select name="selectoption" ngModel (ngModelChange)="change($event)">
            <option *ngFor="let item of interests" [ngValue]="item.value">{{item.display}}</option>
        </select>
    </p>
    <p>
        <input type="submit" value="提交" />
    </p>
    <p>你输入的信息:{{firstrForm.value|json}}</p>
    <p>{{username2.value}}</p>
</form>
//ts代码跟上面的一样的

三、使用ngModelGroup来包裹几个属性

<div ngModelGroup="pwd">
      <p>
        <input type="password" name="psw1" ngModel placeholder="请输入密码"/>
      </p>
      <p>
        <input type="password" name="psw2" ngModel placeholder="请输入密码"/>
      </p>
    </div>

输出效果
运行效果

四、表单的状态

  • 1、ngForm会追踪整个表单控件的状态
  • 2、ngModel会追踪其所在表单控件的状态(在控件上#name1="ngModel")
状态true/false
valid表单值是否有效
pristine表单值是否未改变
dirty表单值是否已改变
touched表单是否已经被访问
untouched表单是否未被访问

五、表单中常见的事件

事件名称描述
input输入框都可以使用的,可以传递参数获取输入框的值
ngSubmit表单提交方法
ngModelChange下拉框改变
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水痕01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值