Form
指令需要引入NgForm
组件:import {NgForm} from 'angular2/common'
实例如下: 新建一个student.ts
文件,作为实体类定义
export class Student{
constructor(
public id: number,
public name: string,
public age: number,
public address?: string
) { }
}
address?
表示在new 一个 student
对象的时候,这个属性可以忽略
新建一个student-form.component.ts
文件
import {Component} from '@angular/core';
import {NgForm} from '@angular/common';
import { Student} from './student';
@Component({
selector: 'student-form',
templateUrl: 'app/student-form.component.html'
})
export class StudentFormComponent {
names= ['桂XX', '石XX', '陈XX', '沈XX'];
model = new Student(1880, this.names[0], 25,"上海市江月路雷特商务1803号");
submitted = false;
onSubmit() { this.submitted = true; }
// TODO: Remove this when we're done
get diagnostic() { return JSON.stringify(this.model); }
}
上面的模板是外部引入方式,需要添加一个模板文件 hero-form.component.html
class="container">
Student Form
class="form-group">
type="text" class="form-control" required>
class="form-group">
type="text" class="form-control" required>
class="form-group">
type="text" class="form-control">
app.component.ts
的代码修改一下:
import {Component} from '@angular/core';
import {StudentFormComponent } from './student-form.component'
@Component({
selector: 'my-app',
template: ' ',
directives: [StudentFormComponent ]
})
export class AppComponent { }
修改上面的form表单 使用*ngFor
循环names
数组。
class="form-group">
type="text" class="form-control" required [(ngModel)]="model.age" >
type="text" class="form-control" required [(ngModel)]="model.age" ngControl="age">
ngcontrol
不只是跟踪状态 ,它通过三种样式类来更新控件 这些样式反应了控件状态。
增加控件对应的样式style.css
.ng-valid[required] {
border-left: 5px solid #42A948; /* green */
}
.ng-invalid {
border-left: 5px solid #a94442; /* red */
}
在index.html
中引入style.css
:
class="form-group">
type="text" class="form-control" required [(ngModel)]="model.age"
ngControl="age" #age="ngForm">
[hidden]="age.valid" class="alert alert-danger">请输入您的年龄
提示 :添加这段代码时 需要重新 npm start
才能正常显示
当表单提交后,我们需要显示一个表单提交后的信息,这个时候需要表单窗体的切换。 在组件中定义一个属性 用于切换表单提交前和提交后的显示
submitted = false;
onSubmit() { this.submitted = true; }
当submitted
为true
时 隐藏输入表单
[hidden]="submitted">
Student Form
当submitted
为false
时 隐藏表单清单信息
[hidden]="!submitted">
您提交的信息:
class="row">
class="col-xs-3">姓名
class="col-xs-9 pull-left">{{ model.name }}
class="row">
class="col-xs-3">年龄
class="col-xs-9 pull-left">{{ model.age}}
class="row">
class="col-xs-3">地址
class="col-xs-9 pull-left">{{ model.address}}