如何立即从观察者那里获取价值?
How to immediately get value from observer?
我有观察者,它存储一些 DOM
元素树的样式。
此外,我有很多输入,我可以在其中更改此样式。
<input
type="text"
[value]="elementData.getSpecificStyle('elementClassName', 'background')"
(keyup)="elementData.setSpecificStyle('elementClassName', 'background', $event.target.value)"
>
样式服务
public setStyle (clazz: string, styleName: string, styleValue: string): void {
if (!this._styles[clazz]) {
this._styles[clazz] = {};
}
this._styles[clazz][styleName] = styleValue;
this.stylesSubject.next(this._styles);
}
private getSpecificStyle (clazz: string, styleName: string): string {
let result: string = '';
this.styles.subscribe((styles: Observable<Object>) => {
result = styles[clazz][styleName];
});
return result;
}
观察者中的所有样式,因此,当我想将一些样式值作为输入值时 - 我需要像 getSpecificStyle
方法一样订阅观察者。
这很正常,当我可以异步获取样式时,但在那种情况下我只想立即从观察者那里获取当前值。
此代码工作正常,但我想知道,有什么方法可以替换该代码
let result: string = '';
this.styles.subscribe((styles: Observable<Object>) => {
result = styles[clazz][styleName];
});
return result;
关于更简单的事情?
当 styles
是可观察的时,这是不可能的。 Observables 按照设计的方式工作。当一个值可用时,他们会推送一个值。
如果您不想使用 subscribe
,则需要将 styles
更改为不 return 可观察。
我有观察者,它存储一些 DOM
元素树的样式。
此外,我有很多输入,我可以在其中更改此样式。
<input
type="text"
[value]="elementData.getSpecificStyle('elementClassName', 'background')"
(keyup)="elementData.setSpecificStyle('elementClassName', 'background', $event.target.value)"
>
样式服务
public setStyle (clazz: string, styleName: string, styleValue: string): void {
if (!this._styles[clazz]) {
this._styles[clazz] = {};
}
this._styles[clazz][styleName] = styleValue;
this.stylesSubject.next(this._styles);
}
private getSpecificStyle (clazz: string, styleName: string): string {
let result: string = '';
this.styles.subscribe((styles: Observable<Object>) => {
result = styles[clazz][styleName];
});
return result;
}
观察者中的所有样式,因此,当我想将一些样式值作为输入值时 - 我需要像 getSpecificStyle
方法一样订阅观察者。
这很正常,当我可以异步获取样式时,但在那种情况下我只想立即从观察者那里获取当前值。
此代码工作正常,但我想知道,有什么方法可以替换该代码
let result: string = '';
this.styles.subscribe((styles: Observable<Object>) => {
result = styles[clazz][styleName];
});
return result;
关于更简单的事情?
当 styles
是可观察的时,这是不可能的。 Observables 按照设计的方式工作。当一个值可用时,他们会推送一个值。
如果您不想使用 subscribe
,则需要将 styles
更改为不 return 可观察。