在rxjs中我想改变复杂对象中的属性但是改变了它。
例如:
我有用户类:
class User {
constructor(
public name: string,
public role: string
) { }
}
我的服务:
@Injectable()
export class AuthService {
user: BehaviorSubject<User>;
constructor() {
this.user = new BehaviorSubject(
new User('wizardnet', 'admin')
);
}
setRole(role) {
// change ONLY the Role property of this.user ???????
// subscribe then clone the object and then call next() ??
}
}
怎么做?
答案 0 :(得分:1)
实际上,除非您不需要订阅以获得服务中的用户价值,否则您所有这一切都是正确的。您可以使用.value
:
@Injectable()
export class AuthService {
user: BehaviorSubject<User>;
constructor() {
this.user = new BehaviorSubject(
new User('wizardnet', 'admin')
);
}
setRole(role) {
const updateUser = Object.assign(this.user.value, {role: role});
this.user.next(updateUser);
return this.user.asObservable();
}
}