Bonfire
Writen by Tzach bonfil. github
Bonfire is open source decorators utils for angular.
- Make change detection easy
- Makes Observable for you
You can your code cleaner and simpler with adding just 2 decorators to your code.
We know that angular change detection is not simple if you want it to be officent, so I made Bonfire.
Simple solution to hard problem.
Now there is no use to call the change detection!
Installation
Bonfire requires Node.js v4+ to run.
Install the dependencies and devDependencies and start the server.
$ npm i @intelligo/bonfire
The Tools
See Examples Below:
Tools | What it does? | How to use? |
---|
(1) ReRenderOnChange | The decorator on the component is actually what causes the other decorators to use change detection | Put it on the top of the component and make sure the component have change detection injected |
(2) SetPicker | Put it on a property we want to trigger re-render only if it changed | Just put it on the property |
(3) WithObservable | Generate a behavior subject (Observable), Which emit values that stored in the original property (You don't need to maintain it at all! Just use it) | Put in on the original property and next to it write the same property name with '$', it will store automatically |
Where to use
Before you use it, make sure you inject the change detection to your component!
import { ReRenderOnChange, SetChecker, WithObservable } from '@intelligo.ai/bonfire';
@ReRenderOnChange()
@Component({
selector: 'my-component',
templateUrl: './my-component.component.html',
styleUrls: ['./my-component.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class MyComponent {
@SetChecker() group: ISomeInterface = {
test: [
{
name: 'Hello',
age: 30
}
]
};
@WithObservable() showLoader = false; showLoader$: BehaviorSubject<boolean>;
constructor(
private cd: ChangeDetectorRef
) {
setTimeout(() => {
this.groups.test[0].name = 'World'
},5000)
}
}
Dependencies
Bonfire uses a number of open source projects to work properly:
- Angular - Platform for building mobile and desktop web applications.
- Rxjs - Reactive extensions library for javascript.
- uuid - Simple, fast generation of RFC4122 UUIDS.
Todos
License
MIT