gpt4 book ai didi

angular - 如何更改可观察对象的属性。 Angular 2/行为主题

转载 作者:太空狗 更新时间:2023-10-29 17:20:49 26 4
gpt4 key购买 nike

我有一个 Person 类型的对象,它具有 firstName、lastName、age 字段。我使用 Behavior Subject 检测任何变化。我有一个观察组件,它订阅了这个 Person 对象的每个更改。一旦检测到更改,观察组件将调用一个方法。我希望此方法更改 Observable Person 对象的属性。

为我服务

export class PersonService {

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

在我的组件中

 export class ObservingComponent {

constructor(public person: Person) {}

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

updateMethod(){
this.personService.firstName = 'updated First Name';
}

当我更改 Observing 对象的属性时,出现此错误。 “属性”firstName 在类型 Observable 上不存在

最佳答案

一个可观察对象是一个流。它没有属性。你想让我做什么?你想把你自己的值(value)放在流上,更新 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'});
}

关于angular - 如何更改可观察对象的属性。 Angular 2/行为主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46356376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com