共享数据 - 的问题,由于对象引用
我实施数据存储服务来分享多个兄弟组件之间的数据。每个组件都需要得到有关数据存储区更改的通知。数据存储不会自行填充,数据需要从控制器设置。共享数据 - 的问题,由于对象引用
data.store.ts
@Injectable() export class DocumentIssueStore {
private _documentIssue: BehaviorSubject<DocumentIssueModel>;
constructor() {
this._documentIssue = new BehaviorSubject(null);
}
public setValue(newVal: DocumentIssueModel) {
this._documentIssue.next(cloneDeep(newVal));
}
public documentIssue(): Observable<DocumentIssueModel> {
return this._documentIssue.asObservable();
}
public current(): DocumentIssueModel {
return cloneDeep(this._documentIssue.getValue());
}
在这两种组分的ngInit
方法,我订阅数据存储:
// Subscribe to changes in the store this.storeSubscription = this.documentIssueStore.documentIssue().subscribe(
(data: DocumentIssueModel) => {
this.documentIssue = data;
}
);
问题: 在任何组分改变this.documentIssue
导致:
- 更改实例(
this.documentIssue
)在所有其他组件订阅 - 在店里改背景(
this._documentIssue.getValue()
)
目标: - 拥有的组件,这是可以改变的,然后通过调用发送到商店单独的对象setValue
方法
回答:
每个用户,如果他们打算修改它可以克隆的数据:
// Subscribe to changes in the store this.storeSubscription = this.documentIssueStore.documentIssue().subscribe(
(data: DocumentIssueModel) => {
this.documentIssue = cloneDeep(data);
}
);
以上是 共享数据 - 的问题,由于对象引用 的全部内容, 来源链接: utcz.com/qa/257989.html