ngx-decorate
Version:
Useful decorators for Angular 2 and above
31 lines • 1.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const ensureSymbol_1 = require("./lib/ensureSymbol");
const HookManager_1 = require("./lib/HookManager");
const symbols_1 = require("./lib/symbols");
const lazy_subject_1 = require("./processors/lazy-subject");
/**
* Decorate a getter that returns a subject. The subject will automatically get completed
* when the component/service/pipe is destroyed.
*/
function LazySubject() {
return (_target, key, desc) => {
const orig = desc.get;
if (!orig) {
throw new Error('LazySubject can only decorate getters');
}
desc.get = function () {
const value = orig.apply(this, arguments);
Object.defineProperty(this, key, {
configurable: true,
enumerable: desc.enumerable,
value
});
ensureSymbol_1.ensureSymbol(this, symbols_1._lazySubj, []).push(value);
return value;
};
HookManager_1.HookManager.for(_target).add(3 /* POST_DESTROY */, lazy_subject_1.lazySubj);
};
}
exports.LazySubject = LazySubject;
//# sourceMappingURL=LazySubject.js.map