سلام
در این مقاله سعی دارم درباره guards انگولار و انواع گاردها صحبت کنم. ممنون میشم تا آخر مقاله با من همراه باشید:
canActivate
برای محافظت از Route از canActivate ما استفاده می کنیم ما این ذهنیت که از لود شدن ماژولی که در آن نام برده می شود جلوگیری نمی کنید و آن ماژول را نیز اجرا می کند.
canActivate(): Promise<boolean | UrlTree> { if (localStorage.getItem("token")) { const tree:UrlTree=this.router.parseUrl('/'); return tree; } else { return true; } }
canLoad
مانند canActivate برای برای محافظت از Route از canLoad استفاده می کنیم با این تفاوت که ماژولی که در آن فراخوانی می شود اجرا نمی کند.
canLoad(): Promise<boolean | UrlTree> { if (localStorage.getItem("token")) { return true; } else { const tree:UrlTree=this.router.parseUrl('/login'); return tree; } }
canMatch
گارد CanMatch کنترل میکند که آیا میتوانیم از مسیر استفاده کنیم و به عنوان یک اثر جانبی، آیا میتوانیم کد را دانلود کنیم یا خیر. علاوه بر این، هنگامی که یکی از گاردهای تعریف شده false را برگرداند، مسیر رد می شود و مسیرهای دیگر به جای آن پردازش می شوند.
const routes: Routes = [ { path: 'todos', canMatch: [() => inject(FeatureFlagsService).hasPermission('todos-v2')], loadComponent: () => import('./todos-page-v2/todos-page-v2.component') .then(v => v.TodosPageV2Component) }, { path: 'todos', loadComponent: () => import('./todos-page/todos-page.component') .then(v => v.TodosPageComponent) }];
در انتها به توجه خوبتون به این مقاله نهابت تشکر دارم.
:))