Forms angularjs2:将字段设置为";肮脏的;,尤其是日期选择器
我不熟悉Angular2/Typescript,因为我来自Java世界,所以我决定直接学习Typescript和Angular2 我希望将大部分逻辑留在服务器上,因此不需要在客户端上进行复杂的验证管理。因此,我只希望用户填写表单,并将所有字段发布/放置到REST服务。目标是让客户端尽可能轻松 我有一张表格:Forms angularjs2:将字段设置为";肮脏的;,尤其是日期选择器,forms,typescript,angular,Forms,Typescript,Angular,我不熟悉Angular2/Typescript,因为我来自Java世界,所以我决定直接学习Typescript和Angular2 我希望将大部分逻辑留在服务器上,因此不需要在客户端上进行复杂的验证管理。因此,我只希望用户填写表单,并将所有字段发布/放置到REST服务。目标是让客户端尽可能轻松 我有一张表格: <form role="form" (ngSubmit)="onSubmit()" #ArbeitstagForm="ngForm"> 因此,这会将输入的数据作为JSON通知我
<form role="form" (ngSubmit)="onSubmit()" #ArbeitstagForm="ngForm">
因此,这会将输入的数据作为JSON通知我,我将在发送到REST服务后将其发送给REST服务。它实际上工作得很好,但只有当我在字段中实际键入某些内容时,当我有一个默认值时,或者我使用日期选择器设置字段时,模型对象值才会保持为空
我发现了字段的脏设置,默认情况下为false,当我输入一些内容时变为true,这也是我在检查firebug时看到的,但这绝对不是我想要实现的
有没有办法在Angular2中设置表单中的所有字段?我发现Angular.js 1有很多例子,但Angular2/Typescript没有。
Control
有一个markAsDirty()
(和markAsTouched()
)方法
更新脏状态
我通常使用
ViewChild
获取对组件中表单的引用。有了这个参照物,我可以在需要的时候标记为“脏”或“碰”。像这样:
export class MyComponent implements OnInit, OnDestroy {
@ViewChild('form') form: NgForm;
...
public methodWithFormChange(): void {
this.form.control.markAsDirty();
}
}
;-) 你为什么要那样
dirty
表示用户修改了字段。是的,但仅当用户键入字段(单击字段,用键盘键入一些字符)时,但当用户单击按钮时,并且按钮/javascript函数后面的设置值(->datepicker)时,字段不会变脏,因此在我的模型对象中没有更新..我缺少一个.control
。更新了我的答案并添加了Plunker。
model = new Arbeitstag();
onSubmit(form:any) {
alert(JSON.stringify(this.model));return false;
}
<input #datePicker="ngForm" type="text" class="form-control pull-right" id="datepicker" [(ngModel)]="model.datum">
<button (click)="datePicker.control.markAsDirty()">update dirty status</button>
export class MyComponent implements OnInit, OnDestroy {
@ViewChild('form') form: NgForm;
...
public methodWithFormChange(): void {
this.form.control.markAsDirty();
}
}