我正在尝试用Angular编写一些飞镖游戏。而且我希望程序中的每个字段都分开,所以我写了这样的东西。
export interface DartboardFieldsData{
name: string;
value: number;
shortcut: string;
multiplier: number;
}
export class DartboardField implements DartboardFieldsData{
constructor(
public readonly name: string,
public readonly value: number,
public readonly shortcut: string,
public readonly multiplier: number){}
}
const S1 = new DartboardField('SINGLE_1', 1, 'S1', 1)
const S2 = new DartboardField('DOUBLE_1', 2, 'D1', 2)
...
const BULL = new DartboardField('BULL', 50, 'B', 2)
const MISS = new DartboardField('MISS', 0, '0', M)
// all fields
现在我想将它们存储在全局只读字典中
const DARTBOARD_FIELDS: {[shortcut: string]: DartboardFieldsData} = {
'S1': S1,
'D1': S2,
//... rest of fields
};
我可能想为单打,双打,三重和扇区(按数字分隔)设置另一本字典,也许更多
readobly DARTBOARD_SINGLES: {[shortcut: string]: DartboardFieldsData} = {
'S1': S1
'S2': S2
...
'S20': S20
};
我应该如何存储所有这些数据?我希望从程序开始(至少是主要程序)开始就可以使用它。
答案 0 :(得分:1)
这是一个可以帮助您的stackblitz演示:link
我来解释一下:
您可以创建一个服务,在其中将有关飞镖盘字段和单打的所有内容放入其中,我称该服务为dart-board.service.ts,DARTBOARD_FIELDS是私有的,因此无法被其使用。
之后,您可以将服务注入到要使用dart字段的组件中,对于我在app.component.ts中进行的演示,
constructor(private dartBoardService: DartBoardService) {}
现在您可以使用getter从服务中检索所需的值:
this.dartBoardFields = this.dartBoardService.getDartBoardFields()