我有2个组件可以说' A'是父母& ' B'在我的应用程序中,如果我有一个父子关系,他们之间共享数据,我通过输入传递数据给孩子。但突然需求发生变化,并且' B'组件不会是A' A'这将是它的兄弟姐妹。仍然是' B'组件取决于A' A'组件数据。当我移动组件B时,我做了以下更改: 1.Earlier Component' A'没有输出事件发射器。现在我有输出事件向父母发送数据。 2. Common Parent传递从Component' A'到' B'通过输入。
我的问题是:如果我使用服务在组件之间共享数据,即使它们具有父子关系,也会是不好的方法。(即使组件关系发生变化,我也不必担心传递数据)。 谢谢
答案 0 :(得分:1)
通常,这是做事的绝对好方法。 唯一可能使您麻烦的是同步。 如果出于某种原因,您同时打开了组件“ A”和“ B”,并且它们在服务中操作了相同的数据,则您需要将该更改通知其他组件。
我见过很多的典型方法如下所示:
@Injectable()
export class DataShareService {
private _data: Subject<MyDataStructure>;
data$: Observable<MyDataStructure> = this._data.asObservable();
changeDataTo(changedData: MyDataStructure) {
this._data.next(changedData);
}
}
让'A'和'B'订阅data $。这样,任何更改都可以更新,并且服务本身负责数据的通信方式,仅此而已,在我看来,这完美地反映了其工作。