如何使用 Angular 提交表单数据
介绍
在本指南中,您将了解如何在 Angular 中使用表单,包括两种不同的表单使用方式:
- 模板驱动的表单
- 模型驱动表单
您应该使用模板驱动表单在模板中完成大部分工作。但是,如果您需要在组件类中工作,请使用模型驱动表单。
模板驱动表单
让我们首先使用模板驱动的表单。创建一个基本的登录表单,并在表单中包含电子邮件 ID、密码和提交按钮。
app.module.ts看起来应该是这样的:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { RouterModule} from '@angular/router';
import { HttpModule } from '@angular/http';
import { FormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { MyserviceService } from './myservice.service';
import { NewCmpComponent } from './new-cmp/new-cmp.component';
import { ChangeTextDirective } from './change-text.directive';
import { SqrtPipe } from './app.sqrt';
@NgModule({
declarations: [
SqrtPipe,
AppComponent,
NewCmpComponent,
ChangeTextDirective
],
imports: [
BrowserModule,
HttpModule,
FormsModule,
RouterModule.forRoot([
{path: 'new-cmp',component: NewCmpComponent}
])
],
providers: [MyserviceService],
bootstrap: [AppComponent]
})
export class AppModule { }
在app.module.ts中,导入FormsModule并将其添加到imports数组中。现在,在app.component.html文件中创建一个表单。
<form #userlogin = "ngForm" (ngSubmit) = "onClickSubmit(userlogin.value)" >
<input type = "text" name = "emailid" placeholder = "emailid" ngModel>
<br/>
<input type = "password" name = "passwd" placeholder = "passwd" ngModel>
<br/>
<input type = "submit" value = "submit">
</form>
您已经创建了一个简单的表单,其中包含电子邮件 ID、密码和提交按钮的输入元素,并为其分配了类型、名称和占位符。
通过添加ngModel命令和name属性来创建模型表单控件。当您需要 Angular 从表单访问数据时,请将ngModel添加到该标签,如上所示。现在,如果您想读取电子邮件地址和密码,请为该字段添加ngModel 。
您可以看到ngForm已添加到#userlogin。现在,将ngForm指令添加到此表单。然后添加onclicksubmit函数并将userlogin.value传递给它。
我们将在app.component.ts中添加一个函数并检索表单中输入的值。
import { Component } from '@angular/core';
import { MyserviceService } from './myservice.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'My Angular Project!';
todaydate;
componentproperty;
constructor(private myservice: MyserviceService) { }
ngOnInit() {
this.todaydate = this.myservice.showTodayDate();
}
onClickSubmit(data) {
alert("Entered Email id : " + data.emailid);
}
}
在上面的app.component.ts中,您已定义onclicksubmit函数。单击提交按钮将导致控制权转到上述函数,并且您可以看到用户输入的数据。
模型驱动表单
从@angular/Forms导入ReactiveFormsModule并将其添加到模型驱动表单的导入数组中。
下面是app.module.ts。
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { RouterModule} from '@angular/router';
import { HttpModule } from '@angular/http';
import { ReactiveFormsModule } from '@angular/forms';
import { AppComponent } from './app.component';
import { MyserviceService } from './myservice.service';
import { NewCmpComponent } from './new-cmp/new-cmp.component';
import { ChangeTextDirective } from './change-text.directive';
import { SqrtPipe } from './app.sqrt';
@NgModule({
declarations: [
SqrtPipe,
AppComponent,
NewCmpComponent,
ChangeTextDirective
],
imports: [
BrowserModule,
HttpModule,
ReactiveFormsModule,
RouterModule.forRoot([
{
path: 'new-cmp',
component: NewCmpComponent
}
])
],
providers: [MyserviceService],
bootstrap: [AppComponent]
})
export class AppModule { }
在app.component.ts中,为模型驱动表单导入几个模块,如FormGroup和FormControl 。
import { Component } from '@angular/core';
import { MyserviceService } from './myservice.service';
import { FormGroup, FormControl } from '@angular/forms';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'My Angular Project!';
todaydate;
componentproperty;
emailid;
formdata;
constructor(private myservice: MyserviceService) { }
ngOnInit() {
this.todaydate = this.myservice.showTodayDate();
this.formdata = new FormGroup({
emailid: new FormControl("angular@gmail.com"),
passwd: new FormControl("abcd1234")
});
}
onClickSubmit(data) {this.emailid = data.emailid;}
}
变量formdata在类创建时初始化。变量emailid和passwd用默认值初始化,以显示在表单中。如果您愿意,可以将其保留为空白。
使用formdata引入表单值并再次在表单 UI app.component.html中使用它们。
<div>
<form [formGroup] = "formdata" (ngSubmit) = "onClickSubmit(formdata.value)" >
<input type = "text" class = "fortextbox" name = "emailid" placeholder = "emailid"
formControlName="emailid">
<br/>
<input type = "password" class = "fortextbox" name="passwd"
placeholder = "passwd" formControlName = "passwd">
<br/>
<input type = "submit" class = "forsubmit" value = "Log In">
</form>
</div>
<p>
Email entered is : {{emailid}}
</p>
在 HTML 文档中,您已在方括号中使用formGroup来表示表单。例如,[formGroup]="formdata" 。提交时,将调用onClickSubmit函数并传递formdata.value 。
输入标签具有属性formControlName并且您传递将在app.component.ts中使用的值。
单击提交时,控制权将被发送到app.component.ts中定义的onClickSubmit。
结论
这就是在 Angular 中使用表单的方式以及一些使用表单的不同方法。
了解更多
探索 Pluralsight 的这些 Angular 课程以继续学习:
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~