Angular 使用服务在组件之间共享数据是一种糟糕的方法吗
我有两个组件,假设“A”是父组件,“B”是子组件。目前,在我的应用程序中,如果我有一个用于共享数据的父子关系,我会通过输入将数据传递给子对象。但是需求突然改变,“B”组件将不再是“a”的子组件,而是它的兄弟。“B”组件仍然依赖于“A”组件数据。当我移动组件B时,我做了以下更改: 早期组件“A”没有输出事件发射器。现在我有了输出事件,它向父级发送数据。 公共父级通过输入将组件“A”发出的数据传递给“B”。Angular 使用服务在组件之间共享数据是一种糟糕的方法吗,angular,Angular,我有两个组件,假设“A”是父组件,“B”是子组件。目前,在我的应用程序中,如果我有一个用于共享数据的父子关系,我会通过输入将数据传递给子对象。但是需求突然改变,“B”组件将不再是“a”的子组件,而是它的兄弟。“B”组件仍然依赖于“A”组件数据。当我移动组件B时,我做了以下更改: 早期组件“A”没有输出事件发射器。现在我有了输出事件,它向父级发送数据。 公共父级通过输入将组件“A”发出的数据传递给“B”。 我的问题是:如果我在使用服务的组件之间共享数据,即使它们具有父子关系,这会是一种糟糕的方法吗
我的问题是:如果我在使用服务的组件之间共享数据,即使它们具有父子关系,这会是一种糟糕的方法吗。即使组件关系发生变化,我也不必担心传递数据。通常,这是一种非常好的方法。 唯一让您感到麻烦的是同步。 无论出于何种原因,如果组件“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”订阅数据$。通过这种方式,任何更改都会对数据进行更新,服务本身负责数据的通信方式,仅此而已,在我看来,这完全反映了它的工作。绝对不是。根据您的要求。当数量较少时,您可以使用服务方法,对于较大的数据量,请使用redux谢谢@Aravin您是否需要更详细的信息或回答?在您确认这不会是一个坏的选择后,我现在清楚地知道该方法。好的。谢谢