如何更改Observable对象的属性。 Angular 2 / BehaviorSubject

时间:2017-09-22 03:29:17

标签: angular rxjs

我有一个Person类型的对象,其中包含firstName,lastName,age字段。我使用行为主题检测到任何变化。我有一个观察组件,订阅了此Person对象的每个更改。一旦更改检测到观察组件将调用方法。我希望此方法更改Observable Person Object的属性。 在我的服务中 导出类PersonService {     personToCopySource = new BehaviorSubject< Person>(null);     personToCopy = this.personToCopySource.asObservable(); 在我的组件中  导出类ObservingComponent {     构造函数(公众人物:人){}     ngOnInit(){       this.personService.person.subscribe(          数据=> {            this.updateMethod()           }       )     }    updateMethod(){      this.personService.firstName ='更新了名字&#39 ;;    } 当我更改Observing对象的属性时,我收到此错误。 "属性"类型Observable上不存在firstName

1 个答案:

答案 0 :(得分:1)

可观察的是一个流。它没有属性。你想让我做什么?您是否希望在流中添加自己的值,并更新了firstName?在这种情况下,您可以尝试Subject#next

export class PersonService {

  personToCopySource = new BehaviorSubject<Person>(null);
  personToCopy = this.personToCopySource.asObservable();

  // Provide a method to update a person,
  // by putting a new or updated person on the stream.
  update(person: Person) { 
    this.personToCopySource.next(person); 
  }

在我的组件中

export class ObservingComponent {

    constructor(public person: Person) {}

    ngOnInit(){
        this.personService.personToCopy.subscribe(
            data=> {
                this.updateMethod(data)
            })
    }

    updateMethod(data){
        this.personService.update({...data, firstName: 'updated First Name'});
    }