Angular 4 - O OnDestroy pode ser executado sem que o OnInit seja acionado?

Apenas uma pergunta genérica sobre os dois ganchos do ciclo de vidaOnInit eOnDestroy. Como esteartigo menciona, eu sempre assumi queOnInit ésempre corra antes doOnDestroy.

Eu tenho um caso em que em umngOnDestroy() Estou impedindo a reprodução de uma faixa de música de fundo. Este som é carregado no componentengOnInit()e porque ongOnDestroy() está sendo executado sem ongOnInit() sendo executado o objeto de som éundefined.

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);
}

No momento, o código está falhando nongOnDestroy ao tentar.fade() um som que éundefined. Claro que posso consertar isso facilmente verificando se o som não estáundefined antes de executar o.fade() função. Minha suposição era que se umngOnDestroy() é executado ongOnInit() deve ter sido executado também - acho que estava errado.

Agora, devido a este caso, estou pensando que em todos osngOnDestroy() no meu aplicativo, devo verificar se o objeto que está sendo usado éundefined antes de executar qualquer operação. Por exemplo, antes de cancelar a assinatura de uma assinatura, devo verificar se a assinatura éundefined, e assim por diante.

Estou certo em assumir isso?

questionAnswers(1)

yourAnswerToTheQuestion