【发布时间】:2018-06-17 16:31:26
【问题描述】:
假设我们有一个 TableComponent。 TableComponent 的目的是展示超级英雄并删除/添加他们。为此,它使用了 HeroService。
TableComponent {
constructor() {
heroService: HeroService
}
getList() {
this.heroService.getHeroes().subscribe(...)
}
addCharacter(character: Character) {
this.heroService.postHero(character).subscribe(...)
}
removeCharacter(character: Character) {
this.heroService.deleteHero(character).subscribe(...)
}
}
现在我们想为我们的超级反派使用相同的 TableComponent。反派服务已经存在并且可以使用了。超级英雄和超级恶棍尽管存在分歧,但也共享同一个班级。唯一不同的是他们的服务。最简洁的实现方式是什么?
我的第一个想法是扩展这两种服务,例如:
tableOptions {
getList: this.getHeroes,
addObject: this.postHero,
deleteObject: this.deleteHero
}
并修改组件,如:
TableComponent {
Input() service; // HeroService or VillainService
getList() {
this.service.tableOptions.getList.subscribe(...)
}
addCharacter(character: Character) {
this.service.tableOptions.addObject(character).subscribe(...)
}
removeCharacter(character: Character) {
this.service.tableOptions.deleteObject(character).subscribe(...)
}
}
但我希望有一些可能更简洁的最佳实践技巧。提前致谢!
【问题讨论】:
标签: angular2-services generic-programming angular2-components