始终检查在组件中调用了哪个服务-Angular 6

时间:2019-04-12 08:55:56

标签: angular

我有一个带有多个按钮的仪表板。为此,我将保存,删除,编辑,清除。在内部,我将有多个组成部分。示例:

  • 仪表板
    • Child1

         -grandchild1
    • Child2

         -grandchild1

         -grandchild2

我的策略是按照SRP为每个功能创建服务。

 create.service.ts
    delete.service.ts
    clear.service.ts
    edit.service.ts

我的问题是,我将永远不得不在孙子组件上制造条件。

示例:

component GrandChild1

ngOnInit(){

if(isClearService()){
 //do something
}
else if(isCreateService()){
 //do something
}
else if(isDeleteService()){
 //do something
}

}

有更好的方法来组织此代码吗?

2 个答案:

答案 0 :(得分:0)

我从未做过,但是我可以认为类似这样的解决方案可以很好地解决您的问题。类型为T的对象的rxjs主题,它定义一个动作。然后其他对象(来自所有不同的服务)将继承并实现基础对象的操作。因此,只要有对象从这些服务中传入。您可以执行相同的操作,但结果会有所不同。

答案 1 :(得分:0)

我认为您的组件中必须有一个方法,该方法在您的服务中调用方法。我认为您可以为所有按钮创建一项服务。例如:

服务

export class ChService {
  delete(id: number) {
    //do something
  }
}

组件

import { ExampleService } from './services/ex.service';
export class AppComponent implements OnInit, OnDestroy {
  constructor(public ex: ExampleService) {}
  delete(id: number) {
    // do something
    this.ex.delete(id);
  }
}