Skip to content

Commit

Permalink
fix(angular): adds possibility to use angular module in lazy loaded r…
Browse files Browse the repository at this point in the history
…outes

BREAKING CHANGE Fixes #131
  • Loading branch information
stalniy committed Dec 2, 2018
1 parent 51f2693 commit 0c7c3c1
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 8 deletions.
8 changes: 5 additions & 3 deletions packages/casl-angular/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,16 @@ import { AbilityModule } from '@casl/angular'
@NgModule({
imports: [
...,
AbilityModule
AbilityModule.forRoot()
],
declarations: [...],
bootstrap: [...],
})
export class AppModule {}
```

**Note**: make sure that you use `AbilityModule.forRoot()` in your main module (usually it's `AppModule`) and `AbilityModule` in children modules (including lazy loaded ones).

### 2. Defining Abilities

This module provides an empty `Ability` instance, so you either need to provide your own or update existing one. In case if you want to provide your own, just define it using `AbilityBuilder` (or whatever way you prefer):
Expand All @@ -56,7 +58,7 @@ import { ability } from './ability'
@NgModule({
imports: [
...,
AbilityModule
AbilityModule.forRoot()
],
declarations: [...],
providers: [
Expand Down Expand Up @@ -98,7 +100,7 @@ export class Session {

See [@casl/ability][casl-ability] package for more information on how to define abilities.

### 3. Check permissios in templates
### 3. Check permissions in templates

To check permissions in any template you can use `CanPipe`:

Expand Down
2 changes: 1 addition & 1 deletion packages/casl-angular/spec/module.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ describe('Ability', () => {

beforeEach(async () => {
TestBed.configureTestingModule({
imports: [AbilityModule],
imports: [AbilityModule.forRoot()],
declarations: [App]
})
await TestBed.compileComponents()
Expand Down
13 changes: 9 additions & 4 deletions packages/casl-angular/src/module.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { NgModule } from '@angular/core';
import { NgModule, ModuleWithProviders } from '@angular/core';
import { Ability } from '@casl/ability';
import { CanPipe } from './can';

Expand All @@ -13,9 +13,14 @@ export function createAbility() {
exports: [
CanPipe
],
providers: [
{ provide: Ability, useFactory: createAbility }
]
})
export class AbilityModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: AbilityModule,
providers: [
{ provide: Ability, useFactory: createAbility },
]
};
}
}

0 comments on commit 0c7c3c1

Please sign in to comment.