Skip to content

ngze/rehooktive

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation



codecov MIT commitizen PRs styled with prettier All Contributors

Reactivating Angular lifecycle hooks! 🚀

Rehooktive is a lightweight library that lets you have the power of reactive programming over Angular lifecycle hooks.
Use it to take advantage of RxJS and have a full reactive support in your directives/components code.

Features

✅  Support all lifecycle hooks
✅  Fully decorative solution
✅  Ivy support

Installation

# Using ng
ng add @ngze/rehooktive

# Using yarn
yarn add @ngze/rehooktive

# Using npm
npm i @ngze/rehooktive

Usage

Here is a usage example for reactive OnChanges:

@Component({...})
export class SimpleComponent {

  @Rehooktive(Hook.OnChanges) // <-- Or any other hook exposed via 'Hook' enum.
  readonly onChanges$: Observable<SimpleChanges>;

  @Input()
  readonly value: number;

  readonly value$ = this.onChanges$
    .pipe(
      map(() => this.value),
      distinctUntilChanged()
    );
}

Without Ivy

In case that you're not using Ivy, all you need to carry out is implementing OnChanges (or any other hook you are using):

@Component({...})
export class SimpleComponent implements OnChanges {

  @Rehooktive(Hook.OnChanges)
  readonly onChanges$: Observable<SimpleChanges>;

  @Input()
  readonly value: number;

  readonly value$ = this.onChanges$
    .pipe(
      map(() => this.value),
      distinctUntilChanged()
    );

  ngOnChanges() {} // <-- Add empty method for 'OnChanges' hook.
}

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Zeev Katz

💻 📖 🤔 🚧

This project follows the all-contributors specification. Contributions of any kind welcome!