используя карту в BehaviorSubject - PullRequest
0 голосов
/ 04 января 2019
           @Injectable()
           export class GlobalService {

           private variables: Map<number, Variable>;

           private observableVariables: BehaviorSubject<Map<number, 
            Variable>>;

          constructor() {
          this.variables = new Map<number, Variable>();
          this.observableVariables = new BehaviorSubject(new Map<number, 
           Variable>());
          }

          addVariable(index: number, variable:Variable) {
          this.variables.set(index, variable);
           }

          public getVariable(index:number):Variable {
          return this.variables.get(index);
          }

          public updateVariableType(index:number, type:VariableType){
           let variable = this.variables.get(index);
            variable.updateType(type);
          }
          public updateVariableName(index:number, name:String){
            let variable = this.variables.get(index);
            variable.updateName(type);
          }
          public updateAllComponents(){
          return this.observableVariables.next(this.variables);
          }
         }

Я использую глобальный сервис, на который подписываются компоненты. Я использую структуру данных карты, чтобы сохранить переменные с соответствующим индексом. Когда новый компонент подписывается на этот сервис, будет ли новый компонент получать все данные на карте или только последний добавленный? В моем случае senario - это новый компонент, который должен получать все данные с карты, а не только последний добавленный. А как транслировать только переменные, которые имеют как имя, так и тип, заполненные через updateVariableType и updateVariableName?

...