【发布时间】:2020-10-03 09:13:16
【问题描述】:
我有一个带有路由的父组件。在该组件内部,我有 3 个子组件,但它们没有任何路由。我正在使用他们的选择器来渲染它们。现在我已经为父组件创建了一个解析器服务,并为两个父子组件调用了所有 api,并且我正在使用 @Input 将数据传递给子组件。
有没有更好的方法将解析器数据传递给子组件,因为我将在不同的父组件中使用这些子组件,所以在这种情况下会很复杂和重复。
父组件 -
<div class="dashboard-outer">
<app-dashboard-leftbar [leftpanelData]="resolverData"></app-dashboard-leftbar>
<app-dashboard-topbar [toppanelData]="resolverData"></app-dashboard-topbar>
<div class="dashboard-content-outer">
<div class="dashboard-content-area">
</div>
</div>
<app-dashboard-rightbar [rightPanelData]="resolverData"></app-dashboard-rightbar>
</div>
解析服务 -
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {
const leftpanel = this._ajaxService.apiCall({}, 'dashboard/leftpanel', 'POST');
const toppanel = this._ajaxService.apiCall({}, 'dashboard/toppanel', 'POST');
const rightpanel = this._ajaxService.apiCall({}, 'dashboard/rightpanel', 'POST');
const dataForDashboard = forkJoin(leftpanel, toppanel, rightpanel)
return dataForDashboard;
}
【问题讨论】:
-
考虑让公共服务在子组件之间共享数据。您可以通过在解析器服务中注入公共服务来将值设置为解析器中的公共服务。
-
@saravana kumar 可以分享一个例子
-
请参考这个例子stackblitz.com/edit/…
标签: angular