Пожалуйста.
о общий вопрос относительно двух крючков жизненного циклаOnInit
а такжеOnDestroy
, Как этостатья упоминает, я всегда предполагал, чтоOnInit
являетсявсегда бежать доOnDestroy
.
У меня есть случай, когда вngOnDestroy()
Я запрещаю воспроизведение фоновой музыки. Этот звук загружен компонентомngOnInit()
и потому чтоngOnDestroy()
выполняется безngOnInit()
будучи запущенным звуковой объектundefined
.
Код
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);
}
На данный момент код не работает вngOnDestroy
при попытке.fade()
звук этоundefined
, Конечно, я могу легко это исправить, проверив, что звук неundefined
перед выполнением.fade()
функция. Мое предположение было, что еслиngOnDestroy()
это запуститьngOnInit()
Должно быть, тоже побежал - наверное, я ошибся.
Теперь из-за этого случая я думаю, что в каждомngOnDestroy()
в моем приложении я должен проверить, является ли используемый объектundefined
перед выполнением каких-либо операций. Так, например, прежде чем отписаться от подписки, я должен проверить, является ли подпискаundefined
, и так далее.
Правильно ли я так предполагаю?