我有一个行为主题,需要一个这样定义的User对象:
userObservable = new BehaviorSubject<User>(null);
然后我有一个函数来获取它的当前值,对局部变量进行一些更改并发布更改,但我不想更改行为主题的值:
const newUser = this.userDetailsObservable.getValue()
newUser.fName = 'John'
this.sendData(newUser)
这样做时,行为主体会发生变化,而无需我调用.next()。如何在不实际更改行为主体的情况下对行为主体的变量进行局部更改?
答案 0 :(得分:1)
getValue()
不会更改行为主体的值。它可能已在sendData
中进行了更改。您可以创建对象的新实例以使其没有任何引用,然后检查它是否仍在更改
您可以使用点差
const newUser = {...this.userDetailsObservable.getValue()}
或者您可以使用经典的旧方式
const newUser = JSON.parse(JSON.stringify(this.userDetailsObservable.getValue()));