Утечка памяти, даже если ссылка на ноль - PullRequest
0 голосов
/ 10 марта 2019

Ссылка на @injectable Сервис удерживает мой Компонент, хотя я устанавливаю ссылку на ноль после завершения использования Сервиса

constructor(
  private router: Router,
  private yakService: YakService,
  private genericStateModel: GenericStateModel,
  private stateManagerQuery: StateManagerQuery,
  private stateManagerService: StateManagerService,
  public authenticationService: AuthenticationService
) {

}

public loadHerd(dataset?: number) {

  this.yakServiceSubscriptionLoadHerd = this.yakService.loadHerd(dataset).subscribe((data: YakItem[]) => {

    this.herdCollection = this.genericStateModel.herdData = data;

    const queryObject: QueryObject = _.cloneDeep(this.queryObject);
    queryObject.days = 0;
    queryObject.eventType = 'updateDays';
    this.stateManagerService.update(queryObject, 'queryObject');

    this.stateManagerService = null;
  });
}

Сервис

  @Injectable({ providedIn: 'root' })
  export class StateManagerService {
    constructor(private stateManagerStore: StateManagerStore, private http: HttpClient) {}

    setActiveQueryObject(id: ID) {
      this.stateManagerStore.setActive(id);
    }

    update(queryObject: QueryObject, activeID: ID) {
      this.stateManagerStore.updateQueryObject(queryObject, activeID);
    }
  }

onDestroy

ngOnDestroy() {
  console.log('HerdComponent::ngDestroy');
  this.yakServiceSubscriptionLoadHerd.unsubscribe();
  this.yakServiceSubscriptionGetStock.unsubscribe();
  this.yakServiceSubscriptionGetHerd.unsubscribe();
  this.stateManagerSubcsription.unsubscribe();
  this.stateManagerService = null;
}

Когда я закомментирую this.stateManagerService.update(queryObject, 'queryObject'); эту строку, Компонент правильно собирается.

Как с этим справиться?

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