Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 6-当父组件获取其子组件的数据时显示加载消息_Angular_Parent Child - Fatal编程技术网

Angular 6-当父组件获取其子组件的数据时显示加载消息

Angular 6-当父组件获取其子组件的数据时显示加载消息,angular,parent-child,Angular,Parent Child,我有一个从服务获取数据的父组件。它通过@Input传递数据,为创建子组件的每个数据迭代响应数据。用户可以在父组件中进行筛选,所以在父组件从服务获取数据时,所有子组件都应该显示加载消息。 最好的方法是什么 一个可能的(不是最简单的,但容易理解,然后重构)解决方案: 创建具有eventEmitter对象的加载服务,例如:loadingEventEmitter 将此服务注入子组件。使用*ngIf根据布尔值隐藏和显示加载屏幕,例如:showLoading 在组件中,从服务订阅事件发射器对象。如果Loa

我有一个从服务获取数据的父组件。它通过@Input传递数据,为创建子组件的每个数据迭代响应数据。用户可以在父组件中进行筛选,所以在父组件从服务获取数据时,所有子组件都应该显示加载消息。 最好的方法是什么

一个可能的(不是最简单的,但容易理解,然后重构)解决方案:

  • 创建具有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示例,并提供一个您希望程序如何工作的最小示例。然后,我可以直接帮助您编写代码。