@man-es/ngx-chain-functional-guards
Version:
An Angular guard that executes functional guards in a serial manner, waiting for each one to complete before proceeding to the next.
72 lines (52 loc) • 2.24 kB
Markdown
<p style="text-align: center;">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/man-es/ngx-tools/master/images/man-es-ngx-tools-dark.svg">
<img alt="MAN-ES NGX · Tools" src="https://raw.githubusercontent.com/man-es/ngx-tools/master/images/man-es-ngx-tools-light.svg" width="100%">
</picture>
</p>
<div style="text-align: center;">
[]()
[]()
[]()
</div>
<hr>
# Ngx Chain Functional Guards
Ngx Chain Functional Guards is a small library that exposes two functions **chainActivationGuards** and **chainDeactivationGuards**. Both of these functions allow to run guards in a serial manner, waiting for each one to complete before proceeding to the next.
## Installation
Requires the following peer dependencies:
- @angular/core (>= 19.0.0)
- @angular/router (>= 19.0.0)
- rxjs (>= 7.0.0)
## Example
### canActivate, canActivateChild
```ts
import { chainActivationGuards } from 'ngx-chain-functional-guards';
// In the route config:
{
path: '...',
// chain the desired guards
canActivate: [chainActivationGuards([SomeGuard1, SomeGuard2, ...])],
...
}
```
### canDeactivate
```ts
import { chainDeactivationGuards } from 'ngx-chain-guards';
// In the route config:
{
path: '...',
// chain the desired guards
canDeactivate: [chainDeactivationGuards([SomeGuard1, SomeGuard2, ...])],
}
```
## API
### CanActivateChildFn, CanActivateFn
The **chainActivationGuards** function lets you add an array of guards to be executed in a serial manner.
```typescript
export declare function chainActivationGuards(guards: CanActivateFn[] | CanActivateChildFn[]): CanActivateFn | CanActivateChildFn
```
### CanDeactivateFn
The **chainDeactivationGuards** function lets you add an array of guards to be executed in a serial manner.
```typescript
export declare function chainDeactivationGuards(guards: CanDeactivateFn<never>[]): CanDeactivateFn<never>
```