در قسمت قبل ، ساختار ابتدایی کلاینت Angular را تدارک دیدیم. در این قسمت قصد داریم سرویسی که زیر ساخت کامپوننت لاگین و عملیات ورود به سیستم را تامین میکند، تکمیل کنیم. تعریف تزریق وابستگی تنظیمات برنامه
در مطلب « تزریق وابستگیها فراتر از کلاسها در برنامههای Angular » با روش تزریق ثوابت برنامه آشنا شدیم. در این مثال، برنامهی کلاینت بر روی پورت 4200 اجرا میشود و برنامهی سمت سرور وب، بر روی پورت 5000. به ...
قصد داریم در طی یک سری مطلب، یک کلاینت Angular 5.x را برای مطلب « اعتبارسنجی مبتنی بر JWT در ASP.NET Core 2.0 بدون استفاده از سیستم Identity » تهیه کنیم. البته این سری، مستقل از قسمت سمت سرور آن تهیه خواهد شد و صرفا در حد دریافت توکن از سرور و یا ارسال مشخصات کاربر جهت لاگین، نیاز بیشتری به قسمت سمت سرور آن ندارد و تاکید آن بر روی مباحث سمت کلاینت Angular است. بنابراین اینکه چگونه این توکن را تولید میکنید، در اینجا اهمیتی ندارد و کلیات آن ...
عموما در برنامههای جاوا اسکریپتی با استفاده از متدهای setTimeout و setInterval میتوان یک تایمر را ایجاد کرد. اما در برنامههای Angular با توجه به استفادهی از کتابخانهی RxJS، امکان ایجاد تایمرهای reactive نیز وجود دارد که در این مطلب آنها را مرور خواهیم کرد.
ایجاد تایمرهای متوالی و بیوقفه
با استفاده از عملگر Observable.interval میتوان یک تایمر بینهایت را ایجاد کرد. پارامتر ورودی آن بر حسب میلی ثانیه است و ...
عموما تزریق وابستگیهای کلاسها، در برنامههای Angular صورت میگیرند. برای مثال در یک NgModule در قسمت providers آن نام کلاسی را معرفی میکنیم و سپس میتوان این کلاس را به سازندهی کامپوننتها تزریق کرد و از امکانات آن استفاده کرد. اما سیستم تزریق وابستگیهای Angular محدود به تزریق وهلههای کلاسها نیست و میتوان قسمت providers را با یک سری شیء تعریف شدهی با {} نیز مقدار دهی کرد. در اینجا میتوان یک token را به یک وابستگی انتساب داد. ...
برخلاف AngularJS، در برنامههای Angular امکانات two way data binding به صورت پیشفرض ارائه نمیشوند تا از تمام مشکلات آن مانند digest cycle ،watchers و غیره خبری نباشد. اما گاهی از اوقات نیاز است انقیاد دو طرفهی سفارشی را بین دو کامپوننت ایجاد کنیم. در این مطلب روش ایجاد یک چنین انقیادهایی را بررسی خواهیم کرد و در اینجا در ابتدا نیاز است دو پیشنیاز Property Binding و Event Binding را بررسی کنیم که از جمع آنها two way data binding حاصل می ...
در مطلب « Angular CLI - قسمت ششم - استفاده از کتابخانههای ثالث » با نحوهی دریافت، نصب و راه اندازی کتابخانهی ngx-bootstrap آشنا شدیم. در اینجا میخواهیم نحوهی کار با کامپوننت Modal آن را بررسی کنیم.
سازماندهی بهتر کامپوننتهای ngx-bootstrap
پس از نصب بستهی npm کتابخانهی ngx-bootstrap و تنظیم فایل angular-cli.json. که در مطلب « Angular CLI - قسمت ششم - استفاده از کتابخانههای ثالث » بررسی شدند، برای کار با ...
وقتی تغییری را در اشیاء خود به وجود میآورید، Angular بلافاصله متوجه آنها شده و viewها را به روز رسانی میکند. هدف از این مکانیزم، اطمینان حاصل کردن از همگام بودن اشیاء مدلها و viewها هستند. آگاهی از نحوهی انجام این عملیات، کمک شایانی را به بالابردن کارآیی یک برنامهی با رابط کاربری پیچیدهای میکند. یک شیء مدل در Angular عموما به سه طریق تغییر میکند:
- بروز رخدادهای DOM مانند کلیک
- صدور درخواستهای Ajax ایی
...
در طراحی برنامههای Angular توصیه شدهاست تا هرگونه منطقی که مستقیما به View یک کامپوننت مرتبط نیست، به یک کلاس سرویس منتقل شود. در این بین ممکن است نیاز به صدور رخدادی از یک سرویس به خارج از آن باشد؛ چیزی مانند EventEmitter. اما EventEmitter برای سرویسها طراحی نشدهاست و کاربرد صحیح آن صرفا محدود به کامپوننتها است. برای حل این مساله، API سرویس ما باید یک Observable را در معرض دید استفاده کننده قرار دهد تا توسط آن بتوان رخدادهایی را ...
پیشتر در مورد HTTP Client جدید Angular، مطلب « ارتقاء به HTTP Client در Angular 4.3 » را بررسی کردیم. یکی دیگر از قابلیتهای HttpClient که روش اصلی دسترسی به اطلاعات از راه دور در Angular 5 نیز میباشد، امکان تعریف Interceptors سفارشی برای آن است. به کمک Interceptors میتوان به تمامی درخواستهای HTTP ارسالی و پاسخهای دریافتی از سرور گوش فرا داد و در این بین منطق ویژهای را پیاده سازی کرد؛ مانندcaching ،logging و غیره. در مطلب جاری قصد دار ...
در مطلب « فرمهای مبتنی بر قالبها در Angular - قسمت چهارم - اعتبارسنجی ورودیها » با نحوهی تنظیمات اعتبارسنجی سمت کلاینت برنامههای Angular آشنا شدیم. اما اگر مدل سمت سرور ما یک چنین شکلی را داشته باشد که به همراه خطاهای اعتبارسنجی سفارشی نیز هست: using System;
using System.ComponentModel.DataAnnotations;
namespace AngularTemplateDrivenFormsLab.Models
{
public class Movie
{
public int Id { get; set; }
...