angularjs2:将字段设置为“脏”,尤其是datepicker

时间:2016-06-03 06:51:46

标签: forms typescript angular

我是Angular2 / Typescript的新手,因为我来自Java世界,我决定直接学习Typescript和Angular2。

我想将大部分逻辑留在服务器上,因此我不需要在客户端上进行复杂的验证管理。所以我想要的是用户填写表单,并将所有字段发布/放入REST服务。目标是让客户端尽可能轻松。

我有一张表格:

<form role="form" (ngSubmit)="onSubmit()" #ArbeitstagForm="ngForm">

和其中的一个字段,一些日期选择器:类似这样:

<input type="text" class="form-control pull-right" id="datepicker" [(ngModel)]="model.datum">

当我提交表格时,我称之为此功能:

model = new Arbeitstag();

onSubmit(form:any) {
  alert(JSON.stringify(this.model));return false;
}

这样我就会将输入的数据提醒为JSON,我将其发送到REST服务。它实际上很棒,但只有当我在字段中输入内容时,当我有一个默认值,或者我使用datepicker设置字段时,模型对象值将保持为空。

我发现了字段的脏设置,默认情况下是假的,当我输入内容时会变为真实,这也是我在查看firebug时看到的内容,但这绝对不是我想实现的

有没有办法在Angular2中将表单中的所有字段设置为脏?我找到了许多Angular.js 1的例子,但没有找到Angular2 / Typescript。

2 个答案:

答案 0 :(得分:2)

Control有一个markAsDirty()(和markAsTouched())方法

<input #datePicker="ngForm" type="text" class="form-control pull-right" id="datepicker" [(ngModel)]="model.datum">

<button (click)="datePicker.control.markAsDirty()">update dirty status</button>

Plunker example

答案 1 :(得分:1)

我通常使用 def correct_login(text): stored_user = user_entry.get() if stored_user == "admin" or "ADMIN": stored_pass = pass_entry.get() if stored_pass == "password": user_entry.delete(0, 'end') pass_entry.delete(0, 'end') pass_win.destroy() else: user_entry.delete(0, 'end') pass_entry.delete(0, 'end') mb.showwarning("Incorrect Credentials", "The username or password you have entered are incorrect.") else: user_entry.delete(0, 'end') pass_entry.delete(0, 'end') mb.showwarning("Incorrect Credentials", "The username or password you have entered are incorrect.") pass_win.bind('<Return>',correct_login) user_label = tk.Label(pass_win, text="Username", font=("Helvetica", 16)) user_entry = tk.Entry(pass_win) pass_label = tk.Label(pass_win, text="Password", font=("Helvetica", 16)) pass_entry = tk.Entry(pass_win, show="*") user_label.grid(row=1, column=0, sticky="E", padx=20, pady=10) user_entry.grid(row=1, column=1, sticky="W", padx=20, pady=10) pass_label.grid(row=2, column=0, sticky="E", padx=20, pady=10) pass_entry.grid(row=2, column=1, sticky="W", padx=20, pady=10) user_entry.focus_force() submit_button = tk.Button(pass_win, text="Submit", command=correct_login) submit_button.grid(row=3, column=0, sticky=("N", "S", "E", "W"), padx=20, columnspan=2) quit_button = tk.Button(pass_win, text="Quit", command=pass_win.destroy) quit_button.grid(row=4, column=0, sticky=("N", "S", "E", "W"), padx=20, columnspan=2) user_entry.delete(0) user_entry.insert(0, "") pass_entry.delete(0) pass_entry.insert(0, "") 获取对组件中表单的引用。有了这个参考,我可以在需要时标记为脏或触摸。像这样:

ViewChild

- )