Как разделить переменную Global count между двумя модулями в Angular? - PullRequest
0 голосов
/ 21 ноября 2018

В моем приложении у меня есть разные лениво загруженные модули, и в каждом модуле мне нужен счетчик, который будет только один для всех модулей, например, если я увеличу счетчик в модуле покупок, поэтому я должен получить этот увеличенный счетчик в модуле оплаты, как я могу достичь

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Вы можете получить счет в двух компонентах следующим образом:

  1. Создайте shared.service.ts, в котором вы объявляете метод установки getter следующим образом и добавляете в App.module.ts;

// shared.service.ts


import { Injectable } from '@angular/core';

@Injectable()

export class SharedService {
 
 public count =0;

setCount(countValue:number){
  this.count+= countValue; 
}
getCount():number{
  return this.count;
}

}

Сервисы, объявленные в app.module, имеют область действия во всем приложении и инициализируются только один раз

Так что вы сомневаетесь, что: "это будет инициализировать счет снова в 0 в другом модуле. Я хочу обновить этот счет в одном модуле и получить доступ к этому измененному счету в другом модуле "не произойдет.

Теперь в каждом компоненте, где вы хотите использовать счетчикпросто вызовите функции setter и getter используя общую службу.

Вот рабочий пример:

https://stackblitz.com/edit/angular-ft4etg

PS: хотя в примере нет отложенной загрузкиреализовано, но для понимания поведения достаточно.

0 голосов
/ 21 ноября 2018

Лучший способ - использовать общий сервис.К вашему сервису могут обращаться компоненты в каждом модуле, и он настраивается просто:

export class CounterService {
  public counter = 0;

  constructor() { }

  incrementCounter(): void {
    this.counter++;
  }

  getCounter(): void {
    return this.counter;
  }
}

У этого есть два очевидных метода для вызова: incrementCounter () для добавления 1 каждый раз и метод get.Вы можете иметь (например) setCounter (), где вы можете установить значение, или decmentCounter (), чтобы уменьшить его на единицу.

...