0

我在 Angular 项目的各个组件中使用如下所示的印度各州数据数组。

我知道一种方法是将其作为集合添加到后端数据库中。但我不想每次下拉需要时都调用 API 来获取状态名称。

什么是最好的方法来定义它在角度内的一个地方,而不是在每个组件中单独定义这个常数。

const States = [
 { name:"Assam",  code:"18",  tin:"AS" },
  { name:"Bihar",  code:"10",  tin:"BH" },
  { name:"Chandigarh",  code:"04",  tin:"CH" },
....
]
4

3 回答 3

3

我想最好的做法是创建一个服务——例如,根据需要在模块或应用程序的根目录中提供的 StatesService。我将添加一个 getStates() 方法,该方法将返回可观察到的状态。

这样,如果您的架构发生变化,您就可以准备好从外部源异步返回您的数据,并且您的所有代码仍然有效。

示例实现:

export class State {
  name: string;
  code: string;
  tin: string;
}

@Injectable({
  providedIn: 'root',
})
export class StatesService {
    private states: State[] = [
    { name:"Assam",  code:"18",  tin:"AS" },
     { name:"Bihar",  code:"10",  tin:"BH" },
     { name:"Chandigarh",  code:"04",  tin:"CH" },
   ];

   getStates(): Observable<State[]> {
     return of(this.states);
   }
}
于 2021-02-08T08:33:35.483 回答
1

constArrays.ts您可以在应用程序根目录附近的某个位置创建一个文件。然后你可以export像这样的常量值:

// constArrays.ts

export const States = [
 { name:"Assam",  code:"18",  tin:"AS" },
  { name:"Bihar",  code:"10",  tin:"BH" },
  { name:"Chandigarh",  code:"04",  tin:"CH" },
....
]

然后,您可以在任何其他文件中导入并使用它,如下所示:

import * as constArrays from 'path/to/file/constArrays';
let states = constArrays.States;
于 2021-02-08T08:25:24.243 回答
0

我认为使用配置文件非常容易使用和维护。

states.config.json

[
  { "name":"Assam",  "code":"18",  "tin":"AS" },
  { "name":"Bihar",  "code":"10",  "tin":"BH" },
  { "name":"Chandigarh",  "code":"04",  "tin":"CH" }
]

然后在需要时导入

import states from 'src/assets/states.config.json';
于 2021-02-08T09:22:51.770 回答