Angular 4: ¿se puede ejecutar OnDestroy sin que se active OnInit?

Solo una pregunta genérica sobre los dos ganchos de ciclo de vidaOnInit yOnDestroy. Como estoartículo menciona, siempre asumí queOnInit essiempre correr antes delOnDestroy.

Tengo un caso donde en unngOnDestroy() Estoy deteniendo la reproducción de una pista de música de fondo. Este sonido se carga del componentengOnInit()y porque elngOnDestroy() se está ejecutando sin elngOnInit() se ejecuta el objeto de sonido esundefined.

Código

ngOnInit() {
    ...

    this.loadSounds();

    ...
}

ngOnDestroy() {
    if (AppSettings.SOUNDS_ENABLED) {
        this.soundService.getSound(Sound.MINI_GAME_BG_MUSIC).fade(0.2, 0, 1500);
    }
}

private loadSounds() {
    this.soundService.loadSound(Sound.MINI_GAME_BG_MUSIC, SoundPathURL.MINI_GAME_BG_MUSIC, true, 0);
}

En este momento el código está fallando en elngOnDestroy cuando trato de.fade() un sonido que esundefined. Por supuesto, puedo solucionarlo fácilmente comprobando que el sonido noundefined antes de ejecutar el.fade() función. Mi suposición era que si unngOnDestroy() se ejecuta elngOnInit() debe haber sido ejecutado también, supongo que estaba equivocado.

Ahora debido a este caso, estoy pensando que en cadangOnDestroy() en mi aplicación debo verificar si el objeto que se está usando esundefined antes de realizar cualquier operación. Entonces, por ejemplo, antes de cancelar la suscripción de una suscripción, debería verificar si la suscripción esundefined, y así.

¿Tengo razón en asumir eso?

Respuestas a la pregunta(1)

Su respuesta a la pregunta