typescript Angular:从外观基类中使用store(Elf)

jslywgbw  于 2022-12-14  发布在  TypeScript
关注(0)|答案(1)|浏览(146)

什么是在外观基类中调用存储的最佳方法,以便有可能封装广泛使用的方法的逻辑来使用存储
假设我们有store(存储库)

export class SomeRepository {
   private readonly store;

  constructor() {
      this.store = createStore()
 }
}

我们有从基础立面延伸出来立面

export abstract class BaseFacade {
   protected store: ReturnType<typeof createStore>

  constructor(protected store: ReturnType<typeof createStore>) {
      this.store = store;
 }

  setEntity(entity: SomeEntity) {
      this.store.update(setEntities(entity))
  }
}

和具体类的实现

@Injectable({ providedIn: 'root'})
export class SomeFacade extends BaseFacade {
     constructor(protected store: Store<SomeRepository>) {       <---- here I have issues, do not know how to invoke store
      super(store)
 }
}

在组件中

export class SomeComponent implements OnInit {
    constructor(private readonly facade: SomeFacade) {}

    ngOnInit() {
         const entity = { name: 'Jon', age: 30 };
         this.facade.setEntity(entity);   <----- so here I can use method from abstract class (and not implement it each time when defining Facade class
    }
}
h7appiyu

h7appiyu1#

当涉及到设计模式时,真的没有正确或错误的答案。你只需要选择一个适合你的应用程序的模式。
我通常不使用立面模式。
以下是我在Angular Apps中使用的流程:
而且我用NGXS作为我的商店。我从来没有用过elf
Component-〉从Store-〉订阅状态,Store使用services执行必要的业务逻辑。
我个人觉得Facade在你的应用程序中引入了隐藏的流。它会使代码变得不必要的复杂。Angular DI + Provider是你所需要的。

相关问题