Вы проверяете на sub
, прежде чем установить sub
.
Если вы просматриваете свой код логически и устанавливаете пошагово, вы увидите, что вы объявляете sub
с начальным значением. Однако это начальное значение является функцией или, в частности, в этом случае подпиской. Что все еще в порядке.
Однако проблема заключается в том, что в самой функции вы полагаетесь на устанавливаемую переменную sub
. А это не так, потому что вы находитесь в процессе его установки, во время его объявления.
Отсюда ошибка:
Cannot access 'sub' before initialization
На самом деле неясно, что выпытаетесь сделать, потому что логически это выглядит, как будто вы пытаетесь подписаться на что-то, но если вы подписались на это, отписаться? Но вы не должны делать это в отписке.
Если вы предпочитаете, вы можете изменить свой код на следующий,
// I assume you have a variable "loaded" above, because you've set self to this in your code
private unsubscribeStream = new Subject();
this.contentservice.loaded.pipe(
filter(x => x !== null), // Filter out where x doesn't exist
takeUntil(this.unsubscribeStream)).subscribe(loaded => {
this.loaded = loaded;
});
// When the component is destroyed, call the next value of unsubscribe stream which will unsubscribe from anything we've set to takeUntil
ngOnDestroy() {
this.unsubscribeStream.next();
}