npm i ngx-auto-unsubscribe-decorator
This library has been created for removing useless code with manually unsubscribes, for this one was created decorator that works with all types of subscriptions, you can wrap observable parameter, a method that returns observable or a method that returns subscription and doesn't think about memory leak.
export class UserComponent implements OnInit {
@AutoUnsubscribe() // <-- Should be on the target parameter
private userData$ = new BehaviorSubject(/* Some data */);
public ngOnInit(): void {
// After ngOnDestroy this subscription will unsubscribe
this.userData$.subscribe();
// You can override parameter, it will unsubscribe too
this.userData$ = new Subject();
this.userData$.subscribe();
}
}
export class UserComponent implements OnInit {
public ngOnInit(): void {
this.getUserData$().subscribe();
this.initUserDataSubscription();
}
@AutoUnsubscribe() // <-- Should be on the target method
public getUserData$(): BehaviorSubject {
return new BehaviorSubject(/* Some data */);
}
@AutoUnsubscribe() // <-- Should be on the target method
public initUserDataSubscription(): BehaviorSubject {
return new BehaviorSubject(/* Some data */).subscribe();
}
}