Skip to content

Latest commit

 

History

History
93 lines (67 loc) · 2.02 KB

README.md

File metadata and controls

93 lines (67 loc) · 2.02 KB

Subjectize

TypeScript decorators for binding RxJS Subject with class properties

Version Twitter: hankchiu_tw

Install

npm i -S subjectize

or

yarn add subjectize

Quick start

import { Subjectize, SubjectizeProps } from 'subjectize';
import { ReplaySubject } from 'rxjs';

class SomeClass {
  propA: any;
  propB: any;

  @Subjectize('propA')
  propA$ = new ReplaySubject(1);

  @SubjectizeProps(['propA', 'propB'])
  propAB$ = new ReplaySubject(1);
}

const instance = new SomeClass();
instance.propA = 'A';
instance.propB = 'B';

// would print 'A'
instance.propA$.subscribe(console.log);

// would print ['propA', 'A'], then ['propB', 'B']
instance.propAB$.subscribe(console.log);

Use with Angular @Input

import { Component, Input } from "@angular/core";
import { ReplaySubject } from "rxjs";
import { Subjectize } from "subjectize";

@Component({
  selector: "app-counter",
  templateUrl: "./counter.component.html",
  styleUrls: []
})
export class CounterComponent {
  @Input()
  count: number;

  @Subjectize("count")
  count$ = new ReplaySubject(1);
}

See full example here.

How it works

Author

👤 hankchiutw

Show your support

Give a ⭐️ if this project helped you!

📝 License

Copyright © 2021 hankchiutw.
This project is MIT licensed.