UNPKG

bixi

Version:

企业级中后台前端解决方案

25 lines (22 loc) 740 B
import { isDevMode } from '@angular/core'; import { Subscription } from 'rxjs'; import { isFunction } from './type'; const doUnsubscribe = (subscription: Subscription) => { if (subscription && isFunction(subscription.unsubscribe)) { if (isDevMode()) { console.log('[@bixi/core/utlis] auto unsubscribe'); } subscription.unsubscribe(); } }; export function AutoUnsubscribe(subscription = 'subscription'): ClassDecorator { return function fn(constructor) { const original = constructor.prototype.ngOnDestroy; constructor.prototype.ngOnDestroy = function _ngOnDestroy() { if (isFunction(original)) { original.apply(this, arguments); } doUnsubscribe(this[subscription]); }; }; }