我有四个不同服务的实例,DataSourceCsv1Service
、DataSourceCsv2Service
、DataSourceXml1Service
和 DataSourceXml2Service
。我正在尝试创建一个带有按钮/链接/单选按钮/某种方式的 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/