在BehaviorSubject中使用Map

时间:2019-01-04 13:20:02

标签: angular angular5 angular6 angular2-services angular7

           @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);
          }
         }

我正在使用组件订阅的Global服务。我正在使用地图数据结构将变量与相应的索引一起保存。当新组件订阅此服务时,新组件将获取地图中的所有数据还是仅获取最后添加的数据?我的情况是,新组件应该从Map中获取所有数据,而不仅仅是最后添加的一个。以及如何只广播通过updateVariableType和updateVariableName填充具有名称和类型的变量?

0 个答案:

没有答案