2017-07-03 11 views
0

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() ?? 
    } 
} 

私は、Userクラスがありますか?

答えて

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(); 
    } 
} 
+0

をご利用ください。私は。値を逃しました:) –

+1

@ShlomiLeviの美しさ 'BehaviorSubject' :) – CozyAzure

関連する問題