@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填充具有名称和类型的变量?