فرمهای سیگنالی انگولار
خلاصهٔ کاملتر
تو این مستند اومده که Signal Forms یه روش تازه برای مدیریت فرم تو انگولاره که به جای مکانیزمهای قدیمی، حالت فرم رو روی سیگنالهای انگولار میسازه. نکتهٔ اصلیش اینه که بین مدل داده و رابط کاربری یه سینک خودکار برقرار میکنه؛ یعنی تا کاربر تو فیلد تایپ میکنه، مدل هم آپدیت میشه و برعکس.
طبق راهنما، کار از یه سیگنال شروع میشه که مدل دادهٔ فرمت رو نگه میداره. مثلاً برای یه فرم لاگین یه اینترفیس میسازی و با signal() مقدار اولیهش رو میدی:
const loginModel = signal<LoginData>({
email: '',
password: '',
});بعد این مدل رو میدی به تابع form() تا یه «درخت فیلد» (FieldTree) بسازه؛ یه ساختار که شکلش دقیقاً مثل مدلته و میتونی با نقطه به فیلدهاش دسترسی داشته باشی، مثل loginForm.email. این درخت پل بین داده و UI هست.
مرحلهٔ بعدی وصل کردن ورودیهای HTML با دایرکتیو [formField] هست که یه بایندینگ دوطرفه بین input و فیلد درست میکنه. به گفتهٔ مستند، این دایرکتیو وضعیت فیلد رو هم برای ویژگیهایی مثل required، disabled و readonly در جای مناسب سینک میکنه:
<input type="email" [formField]="loginForm.email" />
<input type="password" [formField]="loginForm.password" />برای خوندن وضعیت فیلد، خود فیلد رو مثل یه تابع صدا میزنی و یه آبجکت FieldState میگیری که توش سیگنالهایی برای مقدار، اعتبار و وضعیت تعامل هست؛ مثلاً loginForm.email().value() مقدار فعلی رو بهت میده و valid() و touched() هم در دسترسن. برای تغییر برنامهای مقدار هم از value.set() استفاده میکنی که هم فیلد و هم سیگنال مدل رو با هم آپدیت میکنه.
مستند نشون میده که formField با همهٔ نوعهای استاندارد ورودی کار میکنه: ورودیهای متنی و textarea، ورودی number که خودکار بین رشته و عدد تبدیل میکنه، و ورودیهای تاریخ و زمان که مقدار رو به فرمت YYYY-MM-DD و HH:mm نگه میدارن.
نکات کلیدی:
- Signal Forms حالت فرم رو روی سیگنالهای انگولار میسازه و مدل داده و UI رو خودکار سینک میکنه
- با signal() مدل میسازی و با form() یه درخت فیلد ازش درست میکنی
- دایرکتیو [formField] بایندینگ دوطرفهٔ بین input و فیلد رو میسازه
- هر فیلد یه FieldState با سیگنالهای value()، valid() و touched() میده
- با value.set() میتونی مقدار فیلد و سیگنال مدل رو با هم آپدیت کنی




