मैंने सोचा कि मैं अपने दो सेंट में भी डाल दिया। मैं इस पैटर्न का उपयोग करता हूं:
import { Component, OnInit, OnDestroy } from '@angular/core';
import { Subscription } from 'rxjs/Subscription';
@Component({
selector: 'my-component',
templateUrl: 'my.component.html'
})
export class MyComponent implements OnInit, OnDestroy {
private subscriptions: Array<Subscription> = [];
public ngOnInit(): void {
this.subscriptions.push(this.someService.change.subscribe(() => {
[...]
}));
this.subscriptions.push(this.someOtherService.select.subscribe(() => {
[...]
}));
}
public ngOnDestroy(): void {
this.subscriptions.forEach((subscription: Subscription) => {
subscription.unsubscribe();
});
}
}
संपादित करें
मैंने दूसरे दिन प्रलेखन पढ़ा और एक अधिक अनुशंसित पैटर्न पाया:
ReactiveX / RxJS / सदस्यता
पेशेवरों:
यह आंतरिक रूप से नए सदस्यता का प्रबंधन करता है और कुछ साफ चेक जोड़ता है। सुविधा में इस विधि को पसंद करेंगे :)।
विपक्ष:
यह 100% स्पष्ट नहीं है कि कोड प्रवाह क्या है और सदस्यता कैसे प्रभावित होती है। न ही यह स्पष्ट है (केवल कोड को देखने से) यह बंद सदस्यता के साथ कैसे व्यवहार करता है और यदि सदस्यता समाप्त हो जाती है तो सभी सदस्यताएं बंद हो रही हैं।
import { Component, OnInit, OnDestroy } from '@angular/core';
import { Subscription } from 'rxjs/Subscription';
@Component({
selector: 'my-component',
templateUrl: 'my.component.html'
})
export class MyComponent implements OnInit, OnDestroy {
private subscription: Subscription = new Subscription();
public ngOnInit(): void {
this.subscription.add(this.someService.change.subscribe(() => {
[...]
}));
this.subscription.add(this.someOtherService.select.subscribe(() => {
[...]
}));
}
public ngOnDestroy(): void {
this.subscription.unsubscribe();
}
}