@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?