共享数据 - 的问题,由于对象引用

我实施数据存储服务来分享多个兄弟组件之间的数据。每个组件都需要得到有关数据存储区更改的通知。数据存储不会自行填充,数据需要从控制器设置。共享数据 - 的问题,由于对象引用

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

回到顶部