Angular 6-当父组件获取其子组件的数据时显示加载消息
我有一个从服务获取数据的父组件。它通过@Input传递数据,为创建子组件的每个数据迭代响应数据。用户可以在父组件中进行筛选,所以在父组件从服务获取数据时,所有子组件都应该显示加载消息。 最好的方法是什么 一个可能的(不是最简单的,但容易理解,然后重构)解决方案:Angular 6-当父组件获取其子组件的数据时显示加载消息,angular,parent-child,Angular,Parent Child,我有一个从服务获取数据的父组件。它通过@Input传递数据,为创建子组件的每个数据迭代响应数据。用户可以在父组件中进行筛选,所以在父组件从服务获取数据时,所有子组件都应该显示加载消息。 最好的方法是什么 一个可能的(不是最简单的,但容易理解,然后重构)解决方案: 创建具有eventEmitter对象的加载服务,例如:loadingEventEmitter 将此服务注入子组件。使用*ngIf根据布尔值隐藏和显示加载屏幕,例如:showLoading 在组件中,从服务订阅事件发射器对象。如果Loa
- 创建具有eventEmitter对象的加载服务,例如:
loadingEventEmitter
- 将此服务注入子组件。使用
根据布尔值隐藏和显示加载屏幕,例如:*ngIf
showLoading
- 在组件中,从服务订阅事件发射器对象。如果
触发,则将LoadingEvent
布尔值转换为发出的值。 类似这样的内容:showLoading
this.loadingService.loadingEventEmitter.subscribe(value=>this.showLoading=value)代码>
- 将此服务注入到您提到的父组件。启动加载时,在需要时使用
启动发射器;完成加载时,使用this.loadingService.loadingEventEmitter.emit(true)
启动发射器this.loadingService.loadingEventEmitter.emit(false)
@input()正在加载代码>并从父级传递。我是否可以将eventEmitter对象放入父组件用于从服务器获取数据的同一服务中。当然,这取决于您。但是将功能分离到不同的服务被认为是一种实践;从'rxjs/BehaviorSubject'导入{BehaviorSubject}@可注入({providedIn:'root'})导出类装入器服务{private isLoading$:BehaviorSubject=new BehaviorSubject(false);currentState=this.isLoading$.asObservable();constructor(){}show(){debugger;this.isLoading$.next(true);}hide(){debugger;this.isLoading$.next(false);}}
我创建了这个服务,在进行http调用之前,我在父组件中调用show()。并在订阅完成时隐藏。我通过这个.loader.currentState.subscribe在子组件中订阅了它((正在加载:布尔值)。问题是调用show and hide方法时,我没有在子组件中获取更新的数据。仅凭一条注释很难判断出问题出在哪里-请您为您的问题创建一个tackblitz示例,并提供一个您希望程序如何工作的最小示例。然后,我可以直接帮助您编写代码。