Angular код не работает без ngOnDestroy - PullRequest
0 голосов
/ 17 июня 2020

У меня есть компонент для входа в систему, который выглядит следующим образом:

@Component({
    selector: 'app-login',
    templateUrl: './login.component.html',
    styleUrls: ['./login.component.scss'],
    changeDetection: ChangeDetectionStrategy.OnPush,
})
export class LoginComponent extends OtherLoginComponent implements OnInit{

    loginWithPass = !(<RandomService>this.randomService).variable1;
    lText = !(<RandomService>this.randomService).variable1 ? 'LOG IN' : 'LOG IN 123';

    ngOnInit() {
        if(location.href.startsWith(environment.variable_url)){
            (<RandomService>this.randomService)._variable2 = true;
            this.lText = 'LOG IN 123';
        }
        this.loginWithCredentials = !(<RandomService>this.randomService).variable1;
    }

    ngOnDestroy() {

    }

    userPass() {
        this.loginWithPass = true;
        (<RandomService>this.randomService)._variable2 = false;
        this.lText = 'LOG IN';
    }
}

Все вышеперечисленное работает, но когда я удаляю пустой ngOnDestroy (), я получаю следующую ошибку:

Uncaught (in promise): TypeError: Cannot read property 'unsubscribe' of undefined

Кто-нибудь знает, почему это происходит? И что я должен включить в свой ngOnDestroy, чтобы он не был пустым?

1 Ответ

0 голосов
/ 17 июня 2020

Вероятно, это потому, что вы забыли добавить OnDestroy после реализации OnInit ... Angular использует отражение и проверяет, реализовали ли вы OnDestroy перед его вызовом. Обычно вы помещаете вызов отказа от подписки в NgOndestroy, вы очищаете данные представления, которые больше не нужны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...