bixi
Version:
企业级中后台前端解决方案
25 lines (22 loc) • 740 B
text/typescript
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]);
};
};
}