یه نمونه signal form و logic structure با اسم گذاری جدید انگولار داخل repo اضافه کردم
https://github.com/angularcafeacademy/angular-signal-form
دمو:
https://angularcafeacademy.github.io/angular-signal-form/
اگه نکته ای توش به مشکل خوردید نظر بدید ✌🏻
#angularsignal
@angularcafe
https://github.com/angularcafeacademy/angular-signal-form
دمو:
https://angularcafeacademy.github.io/angular-signal-form/
اگه نکته ای توش به مشکل خوردید نظر بدید ✌🏻
#angularsignal
@angularcafe
👍3
🛜 سیگنال، بهترین حرکت انگولار
تا همین چند وقته پیش برای یه کار ساده مثل toggle کردن دکمه sidebarای چیزی از rxjs استفاده میکردیم و کلی پیچیدگیهای مختلف داشتیم که یه کار خیلی پیشپا افتاده و ساده انجام بدیم.
تو سال ۲۰۲۶ دیگه این چیزا مهم نیست و صرفا باید بذاریمشون پشت سر و پیچیدگی هارو کم کنیم.
دیگه بهترین state management برای انگولار signal هست و باید به بهترین شکل ازش استفاده کنیم.
کار یه نیرو خبره و سنیور باید این باشه بتونه تو پروژه های بزرگ:
۱. پیچیدگی هارو کم کنه
۲. پرفورمنس رو ببره بالا
۳. بالاترین reactivity رو تو برنامه بوجود بیاره
۴. بتونه memory leak رو به کمترین حد خودش برسونه
از مشکلات تون تو سیگنال بگید دورهم حل اش کنیم
#angularsignal
@angularcafe
تا همین چند وقته پیش برای یه کار ساده مثل toggle کردن دکمه sidebarای چیزی از rxjs استفاده میکردیم و کلی پیچیدگیهای مختلف داشتیم که یه کار خیلی پیشپا افتاده و ساده انجام بدیم.
تو سال ۲۰۲۶ دیگه این چیزا مهم نیست و صرفا باید بذاریمشون پشت سر و پیچیدگی هارو کم کنیم.
دیگه بهترین state management برای انگولار signal هست و باید به بهترین شکل ازش استفاده کنیم.
کار یه نیرو خبره و سنیور باید این باشه بتونه تو پروژه های بزرگ:
۱. پیچیدگی هارو کم کنه
۲. پرفورمنس رو ببره بالا
۳. بالاترین reactivity رو تو برنامه بوجود بیاره
۴. بتونه memory leak رو به کمترین حد خودش برسونه
از مشکلات تون تو سیگنال بگید دورهم حل اش کنیم
#angularsignal
@angularcafe
👍5❤1
میدونین Zone.js تو Angular مثل یه نگهبان فضوله 😅
هر اتفاق async (کلیک، HTTP، تایمر، Promise) میافته، میپره وسط و میگه: «یه چیزی شد!»
بعد Angular هم global change detection رو روی کل برنامه میندازه و کل component tree رو دوباره چک میکنه.
این برای Developer سادهست، ولی برای runtime دقیق/بهینه نیست.
Zoneless Angular میگه: بهجای «یه چیزی شد… همهچی رو چک کن» برو سمت «state عوض شد… فقط همون قسمت رو آپدیت کن».
در نتیجه:
پس zone.js استفاده بشه ساده است همه چی ولی بهینه نیست
و zoneless اگه استفاده بشه، دقت و performance میره بالا
البته با zoneless کردن صرفا track changes ها حذف نمیشه، یعنی Angular داره از automatic global tracking میره سمت explicit reactive state (مثل signals).
پس اگه پروژه تون خیلی پیچیده و بزرگ نیست و میتونین zonelessاش کنید بعد متوجه performance بالا و رندرینگ بهترش میشید
#zoneless
#angularsignal
@angularcafe
هر اتفاق async (کلیک، HTTP، تایمر، Promise) میافته، میپره وسط و میگه: «یه چیزی شد!»
بعد Angular هم global change detection رو روی کل برنامه میندازه و کل component tree رو دوباره چک میکنه.
این برای Developer سادهست، ولی برای runtime دقیق/بهینه نیست.
Zoneless Angular میگه: بهجای «یه چیزی شد… همهچی رو چک کن» برو سمت «state عوض شد… فقط همون قسمت رو آپدیت کن».
در نتیجه:
پس zone.js استفاده بشه ساده است همه چی ولی بهینه نیست
و zoneless اگه استفاده بشه، دقت و performance میره بالا
البته با zoneless کردن صرفا track changes ها حذف نمیشه، یعنی Angular داره از automatic global tracking میره سمت explicit reactive state (مثل signals).
پس اگه پروژه تون خیلی پیچیده و بزرگ نیست و میتونین zonelessاش کنید بعد متوجه performance بالا و رندرینگ بهترش میشید
#zoneless
#angularsignal
@angularcafe
❤3👍2
تفاوت Async pipe در مقابل takeUntilDestroyed
الگوی قدیمیِ
«destroy$ + takeUntil + ngOnDestroy»
برای جلوگیری از memory leak عملاً بازنشسته شده و Angular حالا دو راه استاندارد و مطمئن داره:
1️⃣ استفاده از async pipe:
بهترین انتخاب وقتی دیتا فقط برای نمایش UIه. Angular خودش subscribe میکنه، با هر emit view رو update میکنه، و موقع destroy کامپوننت هم خودکار unsubscribe میکنه. هدفاش اینه که کامپوننت کلاس تا جای ممکن خالی و declarative بمونه.
2️⃣ استفاده از takeUntilDestroyed:
وقتی مجبوریم داخل کلاس subscribe کنیم (مثل Router events، WebSocket، side-effectها).
⚠️ نکته مهم: takeUntilDestroyed() بهصورت پیشفرض باید داخل injection context صدا زده بشه (منظور constructor هست، نه ngOnInit). اگر داخل ngOnInit لازم داریم، باید DestroyRef رو inject کنید و به operator پاس بدید.
🎯 نکته طلاییش چیه؟
اگه فقط میخواین observable تون رو تو template استفاده کنید از async pipe استفاده کنید و اگه میخواین تو logic تون subscribe داشته باشید از takeUntilDestroyed استفاده کنید با رفرنس destroyRef
#observables
@angularcafe
الگوی قدیمیِ
«destroy$ + takeUntil + ngOnDestroy»
برای جلوگیری از memory leak عملاً بازنشسته شده و Angular حالا دو راه استاندارد و مطمئن داره:
1️⃣ استفاده از async pipe:
بهترین انتخاب وقتی دیتا فقط برای نمایش UIه. Angular خودش subscribe میکنه، با هر emit view رو update میکنه، و موقع destroy کامپوننت هم خودکار unsubscribe میکنه. هدفاش اینه که کامپوننت کلاس تا جای ممکن خالی و declarative بمونه.
2️⃣ استفاده از takeUntilDestroyed:
وقتی مجبوریم داخل کلاس subscribe کنیم (مثل Router events، WebSocket، side-effectها).
⚠️ نکته مهم: takeUntilDestroyed() بهصورت پیشفرض باید داخل injection context صدا زده بشه (منظور constructor هست، نه ngOnInit). اگر داخل ngOnInit لازم داریم، باید DestroyRef رو inject کنید و به operator پاس بدید.
🎯 نکته طلاییش چیه؟
اگه فقط میخواین observable تون رو تو template استفاده کنید از async pipe استفاده کنید و اگه میخواین تو logic تون subscribe داشته باشید از takeUntilDestroyed استفاده کنید با رفرنس destroyRef
#observables
@angularcafe
👍3
#Angularinterview
سوال و جواب مصاحبهای Angular - روز سوم (OnPush strategy و Change Detection)
ادامهی سری روزانه مصاحبه Angular؛ این بار موضوعی رو میگیم که معمولاً مصاحبهکنندهها باهاش میزان شناختت از performance رو میسنجن.
🔹 موضوع روز ۳: Change Detection در Angular
1️⃣ سوال: Change Detection چیه؟
پاسخ: Change Detection مکانیزمیه که Angular باهاش تغییرات داده رو با UI همگام میکنه. هر وقت state اپلیکیشن تغییر کنه، Angular componentها رو بررسی میکنه و اگر لازم باشه DOM رو update میکنه.
2️⃣ سوال: Angular چه زمانی Change Detection رو اجرا میکنه؟
پاسخ: Change Detection معمولاً در این حالتها اجرا میشه:
• حالت ۱: User eventها (مثل click و input)
• حالت ۲: HTTP responseها
• حالت ۳: Timerها (مثل setTimeout و setInterval)
• حالت ۴: Promiseها و Observableها
⚠️ نکته: این جریان معمولاً با Zone.js مدیریت میشه.
3️⃣ سوال: Default Change Detection strategy چیه؟
پاسخ:
• مورد: Angular همهی componentها رو در component tree بررسی میکنه (در صورت استفاده از Zone.js)
• مورد: ساده و قابلفهمه، ولی توی اپهای بزرگ میتونه باعث مشکل performance بشه
4️⃣ سوال: OnPush Change Detection چیه؟
پاسخ: OnPush به Angular میگه فقط وقتی Change Detection رو اجرا کنه که:
• مورد: reference مربوط به input تغییر کنه
• مورد: داخل خود component یک event رخ بده
• مورد: یک observable با async pipe مقدار جدید emit کنه
📌 نتیجه: این کار معمولاً performance رو خیلی بهتر میکنه.
5️⃣ سوال: چه زمانی بهتره از OnPush استفاده کنیم؟
پاسخ:
• مورد: اپلیکیشنهای بزرگ
• مورد: componentهایی که با immutable data کار میکنن
• مورد: componentهای reusable یا presentational
6️⃣ سوال رایجِ ادامهدار تو مصاحبه
👉 چرا با OnPush بعضی وقتها UI update نمیشه؟
چون reference آبجکت تغییر نکرده - Angular به immutability تکیه میکنه.
📌 فهمیدن Change Detection یعنی تجربهی واقعی Angular داری، نه فقط بلد بودن syntax.
➡️ ادامه: روز ۴ بهزودی… (Directives - Structural vs Attribute) ⚡️🧠
#Angularinterview
@angularcafe
سوال و جواب مصاحبهای Angular - روز سوم (OnPush strategy و Change Detection)
ادامهی سری روزانه مصاحبه Angular؛ این بار موضوعی رو میگیم که معمولاً مصاحبهکنندهها باهاش میزان شناختت از performance رو میسنجن.
🔹 موضوع روز ۳: Change Detection در Angular
1️⃣ سوال: Change Detection چیه؟
پاسخ: Change Detection مکانیزمیه که Angular باهاش تغییرات داده رو با UI همگام میکنه. هر وقت state اپلیکیشن تغییر کنه، Angular componentها رو بررسی میکنه و اگر لازم باشه DOM رو update میکنه.
2️⃣ سوال: Angular چه زمانی Change Detection رو اجرا میکنه؟
پاسخ: Change Detection معمولاً در این حالتها اجرا میشه:
• حالت ۱: User eventها (مثل click و input)
• حالت ۲: HTTP responseها
• حالت ۳: Timerها (مثل setTimeout و setInterval)
• حالت ۴: Promiseها و Observableها
⚠️ نکته: این جریان معمولاً با Zone.js مدیریت میشه.
3️⃣ سوال: Default Change Detection strategy چیه؟
پاسخ:
• مورد: Angular همهی componentها رو در component tree بررسی میکنه (در صورت استفاده از Zone.js)
• مورد: ساده و قابلفهمه، ولی توی اپهای بزرگ میتونه باعث مشکل performance بشه
4️⃣ سوال: OnPush Change Detection چیه؟
پاسخ: OnPush به Angular میگه فقط وقتی Change Detection رو اجرا کنه که:
• مورد: reference مربوط به input تغییر کنه
• مورد: داخل خود component یک event رخ بده
• مورد: یک observable با async pipe مقدار جدید emit کنه
📌 نتیجه: این کار معمولاً performance رو خیلی بهتر میکنه.
5️⃣ سوال: چه زمانی بهتره از OnPush استفاده کنیم؟
پاسخ:
• مورد: اپلیکیشنهای بزرگ
• مورد: componentهایی که با immutable data کار میکنن
• مورد: componentهای reusable یا presentational
6️⃣ سوال رایجِ ادامهدار تو مصاحبه
👉 چرا با OnPush بعضی وقتها UI update نمیشه؟
چون reference آبجکت تغییر نکرده - Angular به immutability تکیه میکنه.
📌 فهمیدن Change Detection یعنی تجربهی واقعی Angular داری، نه فقط بلد بودن syntax.
➡️ ادامه: روز ۴ بهزودی… (Directives - Structural vs Attribute) ⚡️🧠
#Angularinterview
@angularcafe
👍1
یادتونه وقتی میخواستیم یه input رو focus کنیم تو reactive form با viewChild اینکار رو میکردیم یا حتی از viewChildren یه خونه از آرایه شو میگرفتیم و focus میکردیم؟
حالا تو Signal form بهمون این قابلیت داده شده که یه فیلد از فرم رو با متد focusBoundControl بیایم focus کنیم 🤩
مثلا میتونیم بگیم اگه فلان فیلد پر شد برو فیلد بعدی یا حتی خطا هایی که میخوریم رو فیلد شو focus کن
اگه کار نکرد یه request animation frame میزنیم تا زمان اجرا رو بندازه به فریم بعدی
clearField(field: string | number): void {
this.formModel.update(fields => ({...fields, [field]: ''}))
requestAnimationFrame(() => {
this.form.someField().focusBoundControl();
});
}
#angularsignal
#signalform
@angularcafe
حالا تو Signal form بهمون این قابلیت داده شده که یه فیلد از فرم رو با متد focusBoundControl بیایم focus کنیم 🤩
مثلا میتونیم بگیم اگه فلان فیلد پر شد برو فیلد بعدی یا حتی خطا هایی که میخوریم رو فیلد شو focus کن
protected nextInvalidField() {
const nextInvalidField = this.form().errorSummary()[0];
if (nextInvalidField) {
nextInvalidField.fieldTree().focusBoundControl();
}
}اگه کار نکرد یه request animation frame میزنیم تا زمان اجرا رو بندازه به فریم بعدی
clearField(field: string | number): void {
this.formModel.update(fields => ({...fields, [field]: ''}))
requestAnimationFrame(() => {
this.form.someField().focusBoundControl();
});
}
#angularsignal
#signalform
@angularcafe
🔥2❤1👍1
#Angularinterview
سوال و جواب مصاحبه Angular - روز چهارم (Directiveها)
ادامهی سری روزانه مصاحبه Angular؛ این بار سراغ مفاهیمی میریم که مصاحبهکنندهها انتظار دارن هم شفاف توضیحش بدی، هم با مثال واقعی.
🔹 موضوع روز ۴: Angular Directives
1️⃣ سوال: Directive در Angular چیه؟
پاسخ: Directive یک class هست که به elementهای موجود در DOM رفتار اضافه میکنه یا نحوهی render شدن elementها رو تغییر میده.
2️⃣ سوال: انواع Directiveها در Angular چیها هستن؟
پاسخ:
• یک: Component Directives
خود componentها هم نوعی directive هستن که template دارن.
• دو: Structural Directives
ساختار DOM رو با اضافه/حذف کردن elementها تغییر میدن.
مثالها: ngIf، *ngFor، *ngSwitch* که با control flow جدید 17+ انگولار بیشتر شون دیگه استفاده نمیشن
• سه: Attribute Directives
ظاهر یا رفتار یک element رو تغییر میدن.
مثالها: ngClass، ngStyle، و directiveهای custom
3️⃣ سوال: فرق اصلی Structural و Attribute Directive چیه؟
پاسخ:
• یک: Structural: معمولاً با * شروع میشن و layout/ساختار DOM رو تغییر میدن
• دو: Attribute: مثل یک attribute روی element قرار میگیرن و رفتار/ظاهر همون element رو تغییر میدن
4️⃣ سوال: چرا Angular فقط اجازه میده روی هر element یک Structural Directive داشته باشیم؟
پاسخ:
چون هر Structural Directive خودش DOM رو دستکاری میکنه.
⚠️نکته: اگر چندتا لازم داشتی، باید elementها رو داخل ng-container (یا یک wrapper مناسب) قرار بدی.
5️⃣ سوال: چطور یک Attribute Directive سفارشی مینویسی و چه کاربرد واقعیای داره؟
پاسخ: Attribute Directive زمانی بهدرد میخوره که بخوای یک رفتار یا ظاهر تکرارشونده رو به چندین element اضافه کنی، بدون اینکه هر بار توی componentها کد تکراری بنویسی.
مثلاً یک directive برای permission یا highlight:
element رو بر اساس نقش کاربر disable/hidden میکنه
یا روی hover / focus استایل خاص میده
یا یک behavior مثل auto-focus، auto-select، debounce input و… اضافه میکنه
📌 نکته مصاحبهای:
یک Attribute Directive معمولاً با ElementRef و Renderer2 کار میکنه تا مستقیم DOM رو دستکاری نکنی و استاندارد Angular رو رعایت کنی.
➡️ ادامه: روز ۵ بهزودی… (Services و Dependency Injection) ⚡️🧠
#Angularinterview
@angularcafe
سوال و جواب مصاحبه Angular - روز چهارم (Directiveها)
ادامهی سری روزانه مصاحبه Angular؛ این بار سراغ مفاهیمی میریم که مصاحبهکنندهها انتظار دارن هم شفاف توضیحش بدی، هم با مثال واقعی.
🔹 موضوع روز ۴: Angular Directives
1️⃣ سوال: Directive در Angular چیه؟
پاسخ: Directive یک class هست که به elementهای موجود در DOM رفتار اضافه میکنه یا نحوهی render شدن elementها رو تغییر میده.
2️⃣ سوال: انواع Directiveها در Angular چیها هستن؟
پاسخ:
• یک: Component Directives
خود componentها هم نوعی directive هستن که template دارن.
• دو: Structural Directives
ساختار DOM رو با اضافه/حذف کردن elementها تغییر میدن.
مثالها: ngIf، *ngFor، *ngSwitch* که با control flow جدید 17+ انگولار بیشتر شون دیگه استفاده نمیشن
• سه: Attribute Directives
ظاهر یا رفتار یک element رو تغییر میدن.
مثالها: ngClass، ngStyle، و directiveهای custom
3️⃣ سوال: فرق اصلی Structural و Attribute Directive چیه؟
پاسخ:
• یک: Structural: معمولاً با * شروع میشن و layout/ساختار DOM رو تغییر میدن
• دو: Attribute: مثل یک attribute روی element قرار میگیرن و رفتار/ظاهر همون element رو تغییر میدن
4️⃣ سوال: چرا Angular فقط اجازه میده روی هر element یک Structural Directive داشته باشیم؟
پاسخ:
چون هر Structural Directive خودش DOM رو دستکاری میکنه.
⚠️نکته: اگر چندتا لازم داشتی، باید elementها رو داخل ng-container (یا یک wrapper مناسب) قرار بدی.
5️⃣ سوال: چطور یک Attribute Directive سفارشی مینویسی و چه کاربرد واقعیای داره؟
پاسخ: Attribute Directive زمانی بهدرد میخوره که بخوای یک رفتار یا ظاهر تکرارشونده رو به چندین element اضافه کنی، بدون اینکه هر بار توی componentها کد تکراری بنویسی.
مثلاً یک directive برای permission یا highlight:
element رو بر اساس نقش کاربر disable/hidden میکنه
یا روی hover / focus استایل خاص میده
یا یک behavior مثل auto-focus، auto-select، debounce input و… اضافه میکنه
📌 نکته مصاحبهای:
یک Attribute Directive معمولاً با ElementRef و Renderer2 کار میکنه تا مستقیم DOM رو دستکاری نکنی و استاندارد Angular رو رعایت کنی.
➡️ ادامه: روز ۵ بهزودی… (Services و Dependency Injection) ⚡️🧠
#Angularinterview
@angularcafe
👍2❤1
مفاهیم SSR و Hydration در Angular
یکی از مهمترین پیشرفتهای Angular اینه که Server-Side Rendering (SSR) و Hydration حالا بهصورت جدی و رسمی در خود فریمورک پشتیبانی میشن و دیگه چیز اضافه و فرعی نیستن.
قبلاً با Angular Universal میتونستیم صفحات رو روی سرور render کنیم.
اما حالا با پشتیبانی از Hydration، Angular میتونه:
🔸اول HTML را روی سرور render کنه
🔸خیلی سریع همون HTML را برای مرورگر بفرسته
🔸به جای اینکه همه چیز رو دوباره از صفر render کنه، همون HTML رو دوباره استفاده (reuse) کنه که با bind کردن event listenerهایی که از DOM صدا زده میشه hydration اتفاق میفته و به همون render اولیه اضافه و فراخوانی میشه بدون اینکه DOM از اول ساخته بشه.
نتیجه چیه؟
🔸یک: First Contentful Paint (FCP) سریعتر میشه
🔸 دو: SEO بهتر میشه
🔸سه: Core Web Vitals بهبود پیدا میکنه (موارد LCP و FID و CLSای که برای Audit کنسول چک میکنیم برای بهبود performance و SEO)
برای داشبورد سازمانی enterprise و پلتفرمهای عمومی، این موضوع واقعاً مهم و تأثیرگذاره و
خبری هم از Blink زدن نیست
#ssr
#seo
#angularhydration
@angularcafe
یکی از مهمترین پیشرفتهای Angular اینه که Server-Side Rendering (SSR) و Hydration حالا بهصورت جدی و رسمی در خود فریمورک پشتیبانی میشن و دیگه چیز اضافه و فرعی نیستن.
قبلاً با Angular Universal میتونستیم صفحات رو روی سرور render کنیم.
اما حالا با پشتیبانی از Hydration، Angular میتونه:
🔸اول HTML را روی سرور render کنه
🔸خیلی سریع همون HTML را برای مرورگر بفرسته
🔸به جای اینکه همه چیز رو دوباره از صفر render کنه، همون HTML رو دوباره استفاده (reuse) کنه که با bind کردن event listenerهایی که از DOM صدا زده میشه hydration اتفاق میفته و به همون render اولیه اضافه و فراخوانی میشه بدون اینکه DOM از اول ساخته بشه.
نتیجه چیه؟
🔸یک: First Contentful Paint (FCP) سریعتر میشه
🔸 دو: SEO بهتر میشه
🔸سه: Core Web Vitals بهبود پیدا میکنه (موارد LCP و FID و CLSای که برای Audit کنسول چک میکنیم برای بهبود performance و SEO)
برای داشبورد سازمانی enterprise و پلتفرمهای عمومی، این موضوع واقعاً مهم و تأثیرگذاره و
خبری هم از Blink زدن نیست
#ssr
#seo
#angularhydration
@angularcafe
👍3❤1
امروز یه سایتی پیدا کردم که توش افکت های خیلی خوبی برای Bento Grid design میتونین ایجاد کنین
اگه زیاده روی نکنیم تو استفاده اش میتونه زیبایی خاصی به Bento grid های سایت هامون اضافه کنه
انیمیشن های ریز و چشم گیر 👀👌🏾
https://ngxui.com/
اگه زیاده روی نکنیم تو استفاده اش میتونه زیبایی خاصی به Bento grid های سایت هامون اضافه کنه
انیمیشن های ریز و چشم گیر 👀👌🏾
https://ngxui.com/
Ngxui
NGXUI - UI Library for Angular
Explore NGXUI, a collection of beautiful Angular UI components designed to enhance your web applications looks.
👏4❤2👍2
انگار Angular بالاخره داره وارد یه دورهی جدید میشه:
یکی از جذابترین چیزهایی که با Angular 22 قراره بیشتر جدی بشه، حرکت به سمت Signal Forms هست.
یعنی کمکم از این مدلها فاصله میگیریم :
❌ FormBuilder
❌ FormGroup
❌ FormControl
❌ valueChanges
❌ patchValue
و میریم سمت یه ساختار تمیزتر، سادهتر و reactiveتر :
ماجرا فقط کوتاهتر شدن syntax نیست:
✅ boilerplate کمتر
✅ خوانایی بهتر
✅ مدیریت state سادهتر
✅ معماری Signal-first
✅ تجربه توسعهدهندگی بهتر
Angular دوباره داره حس مدرن بودن میده
اگه سوالی تو زمینه signal و signal form و مابقی مسایل مربوط به signal داشتین خوشحال میشم کمکی کنم بهتون 👌🏾
#angularsignal
#signalform
#angularcafe
یکی از جذابترین چیزهایی که با Angular 22 قراره بیشتر جدی بشه، حرکت به سمت Signal Forms هست.
یعنی کمکم از این مدلها فاصله میگیریم :
❌ FormBuilder
❌ FormGroup
❌ FormControl
❌ valueChanges
❌ patchValue
و میریم سمت یه ساختار تمیزتر، سادهتر و reactiveتر :
public user = signal({
name: '',
email: ''
});
public form = form(this.user);ماجرا فقط کوتاهتر شدن syntax نیست:
✅ boilerplate کمتر
✅ خوانایی بهتر
✅ مدیریت state سادهتر
✅ معماری Signal-first
✅ تجربه توسعهدهندگی بهتر
Angular دوباره داره حس مدرن بودن میده
اگه سوالی تو زمینه signal و signal form و مابقی مسایل مربوط به signal داشتین خوشحال میشم کمکی کنم بهتون 👌🏾
#angularsignal
#signalform
#angularcafe
👍5❤2
کاش یه سری دوستان توسعه دهنده انگولار که زمان کافی دارن تو روزمره شون ازین کارای ریکت کار ها کپی انگولار شو میزدن و به اشتراک میذاشتن
https://transitions.dev/
#angularcafe
https://transitions.dev/
#angularcafe
Transitions.dev
Transitions.dev: UI transitions for AI agents
Collection of the most essential UI transitions for web apps. Copy and paste them, or use them with your coding agent via the skill.
👍1
https://io.google/2026/explore/technical-session-31
اگه Google I/O رو مثل من از دست دادید و الان دسترسی به نت دارید ویدیو شو از دست ندید 👌🏾
اگه Google I/O رو مثل من از دست دادید و الان دسترسی به نت دارید ویدیو شو از دست ندید 👌🏾
io.google
Google I/O 2026: What's new in Angular
Don’t miss Google I/O, featuring product launches, innovations, and insights. Tune in for the live keynotes and sessions.
👌1
یه قابلیت جدید در انگولار قراره اضافه بشه که تو Google I/O معرفی کردن به اسم @Boundary که اگر یک بخش از UI خطا داد، کل صفحه خراب نشه و فقط همون بخش با fallback UI جایگزین بشه.
#angularcafe
#angularfeature
@boundary {
<heavy-chart [data]="data()" />
} @error {
<chart-error-state />
}#angularcafe
#angularfeature
👍8🔥3
https://angular.love/roadmap
کلیک کنید رو هر آیتم و مقاله های مربوط به اون موضوع رو مطالعه کنید
Angular Roadmap
#angularcafe
کلیک کنید رو هر آیتم و مقاله های مربوط به اون موضوع رو مطالعه کنید
Angular Roadmap
#angularcafe
❤2👍1👨💻1
https://angular.love/angular-22-key-features-and-changes
تغییراتی که در نسخه ماژور یعنی ٢٢ انگولار قراره در دسترس ممنون باشه
آیا از Signal form و امکانات جدید انگولار مثل httpResource و Schema و form Value Control و... استفاده کردید؟
#angularcafe
تغییراتی که در نسخه ماژور یعنی ٢٢ انگولار قراره در دسترس ممنون باشه
آیا از Signal form و امکانات جدید انگولار مثل httpResource و Schema و form Value Control و... استفاده کردید؟
#angularcafe
Angular.love
Angular 22: Key Features and Changes - Angular.love
Read to learn about the novelties of Angular 22: stable signal-based forms, resource management, OnPush defaults, and more.
🔥3👏1
امکانات جدیدی که تو نسخه ۲۲ داریم 🤩
http://blog.angular.dev/announcing-angular-v22-c52bb83a4664
#angularcafe
http://blog.angular.dev/announcing-angular-v22-c52bb83a4664
#angularcafe
👍3🤩2
import { Component, signal } from '@angular/core';
import { httpResource } from '@angular/common/http';
@Component({
selector: 'app-user',
template: `
@if (user.isLoading()) {
<p>Loading…</p>
} @else if (user.hasValue()) {
<h1>{{ user.value().name }}</h1>
}
`
})
export class UserComponent {
userId = signal(1);
// Re-fetches automatically whenever userId changes.
user = httpResource<User>(() => `/api/users/${this.userId()}`);
}استفاده از httpResource بسیار جذاب و کارامد هست 🥳
#angularsignal
#angularcafe
👍4👌2❤1