我正在用RxJ创建一个多选择过滤器,并使用角度服务在组件之间传递值。
response.data
问题是,当用户在应用程序中执行某些工作时,@Injectable({
providedIn: 'root'
})
export class SomeService{
private readonly defaulFilterSelect: SomeSelect[] =
[
{
id: 1,
label: 'label 1',
options: [
{ id: 2, isChecked: false},
{ id: 3, isChecked: false}
]
},
{
id: 7,
label: 'Label 2',
type: { name: 'checkbox' },
options: [
{ id: 4, isChecked: false},
{ id: 5, isChecked: false}
]
}
]
private filterSelectDataSource = new BehaviorSubject<SomeSelect[]>(this.defaulFilterSelect);
filterSelectData$ = this.filterSelectDataSource.asObservable();
public get getFilterSelectData(){
return this.filterSelectDataSource.value;
}
}
类的属性isChecked
可以变为true,以后用户可以返回初始状态,即所有名为“ isChecked”的属性均为SomeSelect
。
因此,我坚决...好吧,如果我需要我的观察者返回初始状态,为什么不只是false
我的默认初始值next()
defaulFilterSelect
由于某种原因,它无法按我预期的那样工作,当我在订阅上进行控制台登录时,我得到了可观察值的先前值。
此外,如果我修改对象 uncheckAllOptions(){
this.filterSelectDataSource.next(this.defaulFilterSelect); //here
}
,而没有调用this.filterSelectDataSource.value
,则UI会监听更改并呈现更改,这确实让我感到困惑,因为我希望仅调用next(obj)
会触发更改在使用该可观察值的用户界面中。
任何人都可以在这里指出正确的方向吗?谢谢!
答案 0 :(得分:2)
在defaulFilterSelect
上将Data Frame(Pandas).
设置为初始值时,您需要深度克隆,否则在更新时,您将更新{{ 1}}。
如何进行深度克隆取决于您,但是我通常使用Lodash cloneDeep
。