Angular: ¿cuál es la forma preferida de terminar los Observables?

Según tengo entendido, Angular y RxJs hay dos formas de terminar los Observables. Usted puedeunsubscribe() de ellos o usartakeUntil() ycomplete(). A continuación se muestran ejemplos de cada enfoque (en pseudocódigo).

El enfoque unsubscribe ()

private _id: number;
private _subscriptions: Subscription[] = [];

constructor(private _route: ActivatedRoute) {
    this._getId();
}

public ngOnDestroy(): void {
    this._subscriptions.forEach(
        subscription => subscription.unsubscribe()
    );
}

private _getId(): void {
    this._subscriptions.push(
        this._route.params.subscribe(params => this._id = +params['id'])
    );
}

El enfoque takeUntil () y complete ()

private _id: number;
private _ngUnsubscribe: Subject<void> = new Subject<void>();

constructor(private _route: ActivatedRoute) {
    this._getId();
}

public ngOnDestroy(): void {
    this._ngUnsubscribe.next();
    this._ngUnsubscribe.complete();
}

private _getId(): void {
    this._route.params.takeUntil(this._ngUnsubscribe).subscribe(
        params => this._id = +params['id']
    );
}

En Angular, ¿hay una forma preferida de terminar Observables?

Respuestas a la pregunta(2)

Su respuesta a la pregunta