首页 > 解决方案 > 将服务从子组件传递到父组件

问题描述

所以我有一个基本组件(ListComponent)和一个父组件(Businesses2ListComponent)。这个想法是我们有多个表/类型的列表,它们都派生自 ListComponent。因此我们必须通过正确的服务。

在此示例中,我想将 BusinessService(扩展 BaseService)传递给 BaseComponent。

这是列表组件:

@Component({
  selector: 'app-list',
  templateUrl: './list.component.html',
  styleUrls: ['./list.component.scss']
})
export class ListComponent<S extends BaseService<T, L>, T, L> implements OnInit {

  constructor(private viewContainerRef: ViewContainerRef,
              private domElement: ElementRef,
              private ngForage: NgForage,
              private route: ActivatedRoute,
              private router: Router,
              private injector: Injector,
              private dataService: S) {
  }
  
}

这是我的 Business2ListComponent:

@Component({
  selector: 'app-businesses2-list',
  templateUrl: './businesses2-list.component.html',
  styleUrls: ['./businesses2-list.component.scss']
})
export class Businesses2ListComponent extends ListComponent<BusinessService, Business, BusinessList> implements OnInit {

  constructor(viewContainerRef: ViewContainerRef,
              domElement: ElementRef,
              ngForage: NgForage,
              dataService: BusinessService,
              route: ActivatedRoute,
              router: Router,
              injector: Injector) {
    super(viewContainerRef, domElement, ngForage, route, router, injector, dataService);
  }

  ngOnInit() {
  }

}

现在这是我尝试运行时遇到的错误: 截屏 截图 2

我认为这是搞砸的最后一个论点,但我还能做些什么呢?

标签: angulartypescriptfrontendweb-frontend

解决方案


当 Angular 显示问号时,它找不到您尝试注入的对象,这可能是多种原因,但一个好的起点是您的模块文件。您是否已将实例化的 BusinessService 添加到您的模块提供程序中?


推荐阅读