Angular 8 Ошибка: ViewDestroyedError: Попытка использовать уничтоженное представление: detectChanges - PullRequest
0 голосов
/ 24 апреля 2020

В Angular 8 приложении у меня есть компонент Layout:

import { Component, OnInit } from '@angular/core';
import { tap, takeUntil } from 'rxjs/operators';
import { Store } from '@ngrx/store';
import { UserService } from '../../../shared/services';
import { AppState } from '../../../app.state';
import { GetUser } from '../../../store/actions/user.action';
import { SafeComponent } from '../../../shared/helpers';

@Component({
  selector: 'wd-layout',
  templateUrl: './layout.component.html',
  styleUrls: ['./layout.component.scss']
})
export class LayoutComponent extends SafeComponent implements OnInit {

  public loading: boolean;

  constructor(
    private readonly store: Store<AppState>,
    private readonly userService: UserService,
  ) {
    super();

    this.userService.user$.pipe(
      takeUntil(this.unsubscriber),
      tap((x: any) => this.loading = x.loading === true)
    ).subscribe();
  }

  ngOnInit() {
    this.store.dispatch(new GetUser());
  }
}

С внедренным SafeComponent:

import { OnDestroy } from '@angular/core';
import { Subject } from 'rxjs';

export abstract class SafeComponent implements OnDestroy {
  protected unsubscriber: Subject<{}> = new Subject();

  ngOnDestroy(): void {
    this.unsubscriber.next()
    this.unsubscriber.complete()
  }
}

И когда я покидаю этот макет и вводю другой, с та же реализация SafeComponent, у меня эта ошибка в консоли каждый раз, когда я переключаюсь с одного на другое:

errors in console

Это говорит о том, что проблема в logo.component, но это просто простой компонент с одной ссылкой без какой-либо логики c, я полагаю, он винит в этом go компонент, потому что я переключаюсь между представлениями, когда нажимаю на него.

...