Md.*_*lam 5 observable rxjs behaviorsubject angular angular7
我有以下课程
export class filter {
public PageRecords: number;
public SearchText: string;
public SortColumn: string = null;
public SortDirection: string = null;
public StartingPos: number;
}
Run Code Online (Sandbox Code Playgroud)
以下行为主题
filterParam = new BehaviorSubject(new filter);
Run Code Online (Sandbox Code Playgroud)
更新主题
this.filterParam.next(<filter>{StartingPos : 1,PageRecords : 10 })
Run Code Online (Sandbox Code Playgroud)
当我得到主题的价值时
this.filterParam.value
Run Code Online (Sandbox Code Playgroud)
它只有我更新的两个道具开始位置和页面记录。它失去了其他道具。
如何解决这个问题?
这是因为您没有直接传递 Filter 对象类。您正在将一些动态 json 转换为过滤器对象,但仅具有这两个属性。
你可以这样做:
const filterParam = new filter();
filterParam.StartingPos = 1;
filterParam.PageRecords = 10;
this.filterParam.next(filterParam);
Run Code Online (Sandbox Code Playgroud)
编辑: 我没有注意到您只想更新BehaviorSubject 值中的两个值。正如 @ritaj 在这个问题下面的评论中建议的那样,你可以做他建议的事情:
this.filterParam.next(Object.assign(this.filterParam.value, {StartingPos: 1, PageRecords: 10 }
Run Code Online (Sandbox Code Playgroud)
Object.assign() 将(所有可枚举自身属性的)值从一个或多个源对象复制到目标对象。它具有 Object.assign(target, ...sources) 的签名。目标对象是第一个参数,也用作返回值。Object.assign() 对于合并对象或浅层克隆它们很有用。
| 归档时间: |
|
| 查看次数: |
6547 次 |
| 最近记录: |