I have below class
export class filter {
public PageRecords: number;
public SearchText: string;
public SortColumn: string = null;
public SortDirection: string = null;
public StartingPos: number;
}
Below behavior subject
filterParam = new BehaviorSubject(new filter);
Updating subject
this.filterParam.next(<filter>{StartingPos : 1,PageRecords : 10 })
When I get the value of subject
this.filterParam.value
It only have two props StartingPos and PageRecords which I updated. it lost other props.
How to resolve this?
It is because you don't pass directly a Filter object class. You are casting some dynamic json to a filter object but only with this two properties.
You can do something like this:
const filterParam = new filter();
filterParam.StartingPos = 1;
filterParam.PageRecords = 10;
this.filterParam.next(filterParam);
EDIT: I didn't notice that you want just update two values from the BehaviorSubject value. As @ritaj suggested in a comment below this aswer you can do something like he suggested:
this.filterParam.next(Object.assign(this.filterParam.value, {StartingPos: 1, PageRecords: 10 }
Object.assign() copies the values (of all enumerable own properties) from one or more source objects to a target object. It has a signature of Object.assign(target, ...sources). The target object is the first parameter and is also used as the return value. Object.assign() is useful for merging objects or cloning them shallowly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With