فرمهای مبتنی بر قالبها در Angular - قسمت سوم - Data binding
نویسنده: وحید نصیری
تاریخ: ۱۳۹۶/۰۴/۰۲ ۸:۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
<!--no binding --> <input name="firstname" ngModel>
<!--one way binding --> <input name="firstname" [ngModel]="firstName">
<!--two way binding --> <input name="firstname" [ngModel]="firstName" (ngModelChange)="firstName=$event">
<!--two way binding --> <input name="firstname" [(ngModel)]="firstName">
> ng g cl Employee/Employee
installing class create src\app\Employee\employee.ts
export class Employee {
constructor(
public firstName: string,
public lastName: string,
public isFullTime: boolean,
public paymentType: string,
public primaryLanguage: string
) {}
} import { Employee } from "app/employee/employee";
export class EmployeeRegisterComponent implements OnInit {
languages = ["Persian", "English", "Spanish", "Other"];
model = new Employee("Vahid", "N", true, "FullTime", "Persian"); <form #form="ngForm" novalidate>
<div class="form-group">
<label>First Name</label>
<input type="text" class="form-control" name="firstName" [(ngModel)]="model.firstName">
</div>
<div class="form-group">
<label>Last Name</label>
<input type="text" class="form-control" name="lastName" [(ngModel)]="model.lastName">
</div> <button class="btn btn-primary" type="submit">Ok</button>
</form>
Model: {{ model | json }}
<br> Angular: {{ form.value | json }}
<br> form.pristine: {{ form.pristine }}
<div class="checkbox">
<label>
<input type="checkbox" name="is-full-time"
[(ngModel)]="model.isFullTime"> Full Time Employee
</label>
</div> <label>Payment Type</label>
<div class="radio">
<label>
<input type="radio" name="paymentType" value="FullTime" checked
[(ngModel)]="model.paymentType">
Full Time
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="paymentType" value="PartTime"
[(ngModel)]="model.paymentType">
Part Time
</label>
</div> <div class="form-group">
<label>Primary Language</label>
<select class="form-control" name="primaryLanguage" [(ngModel)]="model.primaryLanguage">
<option *ngFor="let lang of languages">
{{ lang }}
</option>
</select>
</div>
<div class="form-group">
<label>First Name</label>
<input type="text" class="form-control" name="firstName"
[ngModel]="model.firstName"
(ngModelChange)="firstNameToUpperCase($event)">
</div> firstNameToUpperCase(value: string) {
if (value.length > 0)
this.model.firstName = value.charAt(0).toUpperCase() + value.slice(1);
else
this.model.firstName = value;
} export interface SelectedListItem {
value: string;
text: string;
checked: boolean;
} export class AppComponent implements OnInit {
selectedListItem: SelectedListItem[] = [];
ngOnInit(): void {
// میتوان این مقادیر را از یک
// api
// دریافت کرد
this.selectedListItem.push({ value: '1', text: 'Friday', checked: false });
this.selectedListItem.push({ value: '2', text: 'Monday', checked: false });
this.selectedListItem.push({ value: '3', text: 'Saturday', checked: false });
this.selectedListItem.push({ value: '4', text: 'Sunday', checked: false });
this.selectedListItem.push({ value: '5', text: 'Thursday', checked: false });
this.selectedListItem.push({ value: '6', text: 'Tuesday', checked: false });
this.selectedListItem.push({ value: '7', text: 'Wednesday', checked: false });
}
save(form, evetn: Event) {
if (form.valid && this.isValidated()) {
alert('valid');
} else {
alert('invalid');
}
}
isValidated () {
const selected = this.selectedListItem.filter(x => x.checked === true);
if (selected && selected.length > 0) {
return true;
} else {
return false;
}
}
} <form #form="ngForm" novalidate (submit)="save(form,$event)">
<div *ngFor="let item of selectedListItem">
<input type="checkbox" [(ngModel)]="item.checked" name="off">
<label>
{{item.text}}
</label>
</div>
<p [hidden]=" !form.submitted || isValidated()">
This field is required
</p>
<div>
<input type="submit">
</div>
</form>