আমি এ এর markAsDirty
সমস্ত কন্ট্রোল করতে চাই FormGroup
।
আমি এ এর markAsDirty
সমস্ত কন্ট্রোল করতে চাই FormGroup
।
উত্তর:
এটি Object.keys
পরিচালনা করতে পারে তা জানতে পেরে ..
Object.keys(this.form.controls).forEach(key => {
this.form.get(key).markAsDirty();
});
কৌণিক 8+ এর জন্য, নিম্নলিখিতগুলি (মাইকেলেঞ্জেলো উত্তরের উপর ভিত্তি করে) ব্যবহার করুন:
Object.keys(this.form.controls).forEach(key => {
this.form.controls[key].markAsDirty();
});
এটি মূল্যবান কিসের জন্য, অবজেক্ট.কিজ (...) যাদু ব্যবহার না করে এটি করার আরও একটি উপায় রয়েছে :
for (const field in this.form.controls) { // 'field' is a string
const control = this.form.get(field); // 'control' is a FormControl
}
গৃহীত উত্তর ফ্ল্যাট ফর্ম কাঠামোর জন্য সঠিক, তবে মূল প্রশ্নের সম্পূর্ণ উত্তর দেয় না। একটি ওয়েব পৃষ্ঠার জন্য নেস্টেড ফর্মগ্রুপ এবং ফর্মআরাইগুলির প্রয়োজন হতে পারে এবং একটি শক্তিশালী সমাধান তৈরি করতে আমাদের অবশ্যই এটির অ্যাকাউন্ট করতে হবে।
public markControlsDirty(group: FormGroup | FormArray): void {
Object.keys(group.controls).forEach((key: string) => {
const abstractControl = group.controls[key];
if (abstractControl instanceof FormGroup || abstractControl instanceof FormArray) {
this.markControlsDirty(abstractControl);
} else {
abstractControl.markAsDirty();
}
});
}
instanceof
টাইপস্ক্রিপ্ট দ্বারা প্রতিস্থাপনের পরে সর্বদা কাজ করবে ?
instanceof
-স্ক্রিপ্ট-নির্দিষ্ট কীওয়ার্ড নয় ( ডেভেলপার.মোজিলা.আর.ইন -ইউএস / ডকস / ওয়েবে / জাভা স্ক্রিপ্ট / রেফারেন্স /… ) উভয়ই class
ডেটা টাইপ নয়।
@ মারকোস জবাবটি ব্যবহার করে আমি একটি ফাংশন তৈরি করেছি যা ফর্মগ্রুপকে প্যারামিটার হিসাবে পাস করা বলা যেতে পারে এবং এটি প্রতিটি ফর্মগ্রুপ বাচ্চাদের নিয়ন্ত্রণ করে নোংরা করার জন্য, এটি কোডের আশেপাশে আরও জায়গা থেকে এটি ব্যবহারের যোগ্য করে তোলে যাতে এটি কোনও পরিষেবাতে রেখে দেয় example
public touchAllFormFields(formGroup: FormGroup): void {
Object.keys(formGroup.controls).forEach((key) => {
formGroup.get(key).markAsDirty();
});
}
আশা করি এটা সাহায্য করবে ;)
দেখে মনে হচ্ছে যে get
ফাংশনটি আপনার কৌনিক 8 এ আপনার ফর্মের নির্দিষ্ট মানগুলি পুনরুদ্ধার করার জন্য আর কাজ করছে না, সুতরাং @ লিভিউ ইলিয়ার উত্তরের ভিত্তিতে আমি এটি সমাধান করেছি।
for (const field in this.myForm.controls) { // 'field' is a string
console.log(this.myForm.controls[field].value);
}
Object.keys( this.registerForm.controls).forEach(key => {
this.registerForm.controls[key].markAsDirty();
});
আমি এটি তৈরি করতে এই ফাংশনটি তৈরি করি * নাম 'অর্ডার' সহ আমার একটি নিয়ন্ত্রণ আছে এবং তাকে সূচকটি পাস করি।
{"conditionGroups": [
{
"order": null,
"conditions": []
}
]
}
updateFormData() {
const control = <FormArray>this.form.controls['conditionGroups'];
control.value.map((x,index)=>{
x.order = index;
})
Cannot invoke an expression whose type lacks a call signature. Type 'AbstractControl' has no compatible call signatures.
কেন কেউ জানে কেন?