在Angular/RXJS中,当我们从Observable更改对象的属性时,其值应该立即在BehaviorSubject中反映出来。为了实现这一点,可以使用map运算符和BehaviorSubject来创建一个可被观察的对象:
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { map } from 'rxjs/operators';
export class ExampleComponent {
private subject = new BehaviorSubject({ foo: 'initial foo value', bar: 'initial bar value' });
ngOnInit() {
this.subject.pipe(
map((value) => {
value.foo = 'new foo value';
return value;
})
).subscribe((value) => {
console.log(value);
});
}
}
首先,我们创建了一个包含初始值的BehaviorSubject。接下来,我们使用管道运算符pipe()来将之前的值map到新的值。在这个映射函数中,我们可以改变对象的属性。最后,我们在subscribe()方法中订阅Observable以便获得更改后的值,并在控制台中打印它。现在,更改对象属性值后,BehaviorSubject中的值也将立即更改。