Angular 2
कोणीय 2 डेटा चालित प्रपत्र
खोज…
टिप्पणियों
this.myForm = this.formBuilder.group
उपयोगकर्ता के कॉन्फ़िगरेशन के साथ एक प्रपत्र ऑब्जेक्ट बनाता है और इसे इस .myForm चर पर असाइन करता है।
'loginCredentials': this.formBuilder.group
विधि नियंत्रणों का एक समूह बनाती है जिसमें एक फॉर्मकंट्रोलनाम होता है जैसे। login
और मूल्य ['', Validators.required],
जहां पहला पैरामीटर फॉर्म इनपुट का प्रारंभिक मूल्य है और सेकंड्स एक मान्यकर्ता या 'email': ['', [Validators.required, customValidator]],
में वैद्यों का एक सरणी है 'email': ['', [Validators.required, customValidator]],
,।
'hobbies': this.formBuilder.array
उन समूहों की एक सरणी बनाता है जहाँ समूह का सूचकांक रूप में समूहसमूह है और इसे इस तरह एक्सेस किया जाता है:
<div *ngFor="let hobby of myForm.find('hobbies').controls; let i = index">
<div formGroupName="{{i}}">...</div>
</div>
onAddHobby() {
(<FormArray>this.myForm.find('hobbies')).push(new FormGroup({
'hobby': new FormControl('', Validators.required)
}))
}
यह नमूना विधि सरणी में नया फॉर्मग्रुप जोड़ता है। वर्तमान में एक्सेस करने के लिए उस प्रकार के नियंत्रण को निर्दिष्ट करना होगा जिसे हम एक्सेस करना चाहते हैं, इस उदाहरण में यह प्रकार है: <FormArray>
removeHobby(index: number){
(<FormArray>this.myForm.find('hobbies')).removeAt(index);
}
ऊपर दिए गए समान नियम सरणी से एक विशिष्ट प्रपत्र नियंत्रण को हटाने के लिए लागू होते हैं
डेटा संचालित प्रपत्र
अंग
import {Component, OnInit} from '@angular/core';
import {
FormGroup,
FormControl,
FORM_DIRECTIVES,
REACTIVE_FORM_DIRECTIVES,
Validators,
FormBuilder,
FormArray
} from "@angular/forms";
import {Control} from "@angular/common";
@Component({
moduleId: module.id,
selector: 'app-data-driven-form',
templateUrl: 'data-driven-form.component.html',
styleUrls: ['data-driven-form.component.css'],
directives: [FORM_DIRECTIVES, REACTIVE_FORM_DIRECTIVES]
})
export class DataDrivenFormComponent implements OnInit {
myForm: FormGroup;
constructor(private formBuilder: FormBuilder) {}
ngOnInit() {
this.myForm = this.formBuilder.group({
'loginCredentials': this.formBuilder.group({
'login': ['', Validators.required],
'email': ['', [Validators.required, customValidator]],
'password': ['', Validators.required]
}),
'hobbies': this.formBuilder.array([
this.formBuilder.group({
'hobby': ['', Validators.required]
})
])
});
}
removeHobby(index: number){
(<FormArray>this.myForm.find('hobbies')).removeAt(index);
}
onAddHobby() {
(<FormArray>this.myForm.find('hobbies')).push(new FormGroup({
'hobby': new FormControl('', Validators.required)
}))
}
onSubmit() {
console.log(this.myForm.value);
}
}
function customValidator(control: Control): {[s: string]: boolean} {
if(!control.value.match("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?")) {
return {error: true}
}
}
HTML मार्कअप
<h3>Register page</h3>
<form [formGroup]="myForm" (ngSubmit)="onSubmit()">
<div formGroupName="loginCredentials">
<div class="form-group">
<div>
<label for="login">Login</label>
<input id="login" type="text" class="form-control" formControlName="login">
</div>
<div>
<label for="email">Email</label>
<input id="email" type="text" class="form-control" formControlName="email">
</div>
<div>
<label for="password">Password</label>
<input id="password" type="text" class="form-control" formControlName="password">
</div>
</div>
</div>
<div class="row" >
<div formGroupName="hobbies">
<div class="form-group">
<label>Hobbies array:</label>
<div *ngFor="let hobby of myForm.find('hobbies').controls; let i = index">
<div formGroupName="{{i}}">
<input id="hobby_{{i}}" type="text" class="form-control" formControlName="hobby">
<button *ngIf="myForm.find('hobbies').length > 1" (click)="removeHobby(i)">x</button>
</div>
</div>
<button (click)="onAddHobby()">Add hobby</button>
</div>
</div>
</div>
<button type="submit" [disabled]="!myForm.valid">Submit</button>
</form>