Angular 4 - 让父组件选择 child 将使用的服务

标签 angular

我有四个不同服务的实例,DataSourceCsv1ServiceDataSourceCsv2ServiceDataSourceXml1ServiceDataSourceXml2Service。我正在尝试创建一个带有按钮/链接/单选按钮/某种方式的 DataSource 组件,以便用户可以选择这些服务中的哪些应该用于 DataSource 中显示的任何子组件 组件。

我已将这些服务添加到 app.module.ts 中的提供程序:

....
providers: [ DataSourceCsv1Service, DataSourceCsv2Service, DataSourceXml1Service, DataSourceXml2Service ],
....

并且子组件应该使用父组件选择来提取它们的数据。但是,我不确定如何从提供给父组件的提供程序中进行选择,因此只能使用一个来源。

有没有人有什么见解?

最佳答案

使用@Input() 的选项还不错。在我看来可能比我提议的更好。然而,有不止一种选择是件好事。这个想法是让您的 child 进入 parent 并在他们中设置您想要的服务。

export class Parent implements OnInit {

  @ViewChild(ChildComponent)
  private child: ChildComponent;

  @ViewChild(AnotherChildComponent)
  private anotherChild: AnotherChildComponent;

  constructor(
    private _dataSourceCsv1Service: DataSourceCsv1Service, 
    private _dataSourceCsv2Service: DataSourceCsv2Service, 
    private _dataSourceXml1Service: DataSourceXml1Service,
    private _dataSourceXml1Service: DataSourceXml2Service) { }

  public ngOnInit() {
   this.child.setService(this._dataSourceCsv2Service)
  }

关于Angular 4 - 让父组件选择 child 将使用的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44106766/

相关文章:

Angular 2 - 如何从父级触发子级的方法

angular - 在angular cli项目结构中的何处添加或放置外部Javascript文件并在 typescript 文件中使用它们?

angular - 使用 Observable 闪烁 *ngIf 的内容

javascript - Angular 5 自定义错误处理程序 : Display Error-message

Angular Material - mat-table 不渲染来自 rest api 的数据

javascript - 向接口(interface)添加新属性

javascript - 将 Angular 4 升级到 Angular 5,安装包失败

Angular 7 CLI 生成的项目抛出 "ERROR in multi ./src/styles.sass"

javascript - ionic 2 ion-datetime ISO格式问题

angular - 如何在状态由 ngrx-forms 管理的情况下动态地将 formgroup 控件添加到 Angular 的 formarray 中?