我可以仅使用一个更新的字段将对象发射到流中吗?
Can I emit object to stream with only one updated field?
我有一个行为主题,它是我服务中的私有字段
private data = new BehaviorSubject<Email>({
body: '',
email: ''
});
我可以创建仅更新电子邮件对象的一个字段并将其发送到流的方法吗?是这样的吗?
setBody(inputBody: string) {
this.data.next({body: inputBody});
}
这里的问题是我需要保持其他字段不变。可能吗?
也许可以创建一个 'generic' 方法来按名称更新任何字段?
您必须获取 BehaviorSubject 的当前值,然后更新您的特定 属性
setBody(inputBody: string) {
const content = this.data.getValue()
this.data.next({...content, body: inputBody});
}
通用字段Setter:
#1 使用行为主体的 .getValue()
setField(field: string, payLoad: any) {
this.data.next({
...this.data.getValue(),
[field]: payLoad
});
}
#2 使用任何 observable 的下一个值
这里,this.data
不需要是BehaviorSubject
。
setField(field: string, payLoad: any) {
this.data.pipe(
take(1),
map(curr => ({...curr, [field]: payLoad}))
).subscribe(this.data.next.bind(this.data));
}
我有一个行为主题,它是我服务中的私有字段
private data = new BehaviorSubject<Email>({
body: '',
email: ''
});
我可以创建仅更新电子邮件对象的一个字段并将其发送到流的方法吗?是这样的吗?
setBody(inputBody: string) {
this.data.next({body: inputBody});
}
这里的问题是我需要保持其他字段不变。可能吗? 也许可以创建一个 'generic' 方法来按名称更新任何字段?
您必须获取 BehaviorSubject 的当前值,然后更新您的特定 属性
setBody(inputBody: string) {
const content = this.data.getValue()
this.data.next({...content, body: inputBody});
}
通用字段Setter:
#1 使用行为主体的 .getValue()
setField(field: string, payLoad: any) {
this.data.next({
...this.data.getValue(),
[field]: payLoad
});
}
#2 使用任何 observable 的下一个值
这里,this.data
不需要是BehaviorSubject
。
setField(field: string, payLoad: any) {
this.data.pipe(
take(1),
map(curr => ({...curr, [field]: payLoad}))
).subscribe(this.data.next.bind(this.data));
}