Angular:使用facade基类中的store (Elf)



调用facade基类中的store的最佳方法是什么,因此有可能封装广泛使用的方法的逻辑以使用store

假设我们有store (repository)

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
}
}

当涉及到设计模式时,真的没有正确或错误的答案。你只需要选择一个适合你的应用程序。

我一般不使用正面模式。

下面是我在Angular应用中使用的流程:

我也使用NGXS作为我的商店。我从未使用过elf

Component->从Store-&gt中订阅状态;Store使用services完成必要的业务逻辑。

我个人认为facade在应用程序中引入了隐藏流。它会使代码变得不必要的复杂。你只需要Angular DI + Provider就够了。

最新更新