Angular 环境与常量的useValue

Angular 环境与常量的useValue,angular,typescript,angular-material,Angular,Typescript,Angular Material,假设我有一组链接,我想将它们添加到单独的文件中,如下所示: export const SITE_LINKS = [ { text: 'About', path: '/about' }, { text: 'Projects', path: '/projects } ] 我将在两个位置使用它们:header.component.ts和footer.component.ts <ul> <li *ngFor="let link of links"&

假设我有一组链接,我想将它们添加到单独的文件中,如下所示:

export const SITE_LINKS = [
   { text: 'About', path: '/about' },
   { text: 'Projects', path: '/projects }
]
我将在两个位置使用它们:
header.component.ts
footer.component.ts

<ul>
  <li *ngFor="let link of links">
    <a [routeLink]="link.path">{{ link.text }}</a>
  </li>
</ul>
  • 将它们添加为依赖项,以便DI框架能够解析它们
  • const siteLinks=new InjectionToken('site links'))
    供应商:[
    {提供:站点链接:使用值:站点链接}
    ]
    

    我想知道w/c一种是更好的方法,在什么情况下我应该选择一种方法而不是另一种方法?

    environment.ts

    <ul>
      <li *ngFor="let link of links">
        <a [routeLink]="link.path">{{ link.text }}</a>
      </li>
    </ul>
    
    • 如果您正在处理有关重要凭据或配置的常量,例如API端点、应用程序ID、密钥和其他在每个环境中都会发生更改的类似项,请使用此选项
    • 切换环境时即将更改的变量,例如
      dev、prod、test
    • 查看
      站点链接
      ,我认为把它放在这里是不对的,不管环境如何,我认为
      站点链接
      中的项目仍然会保持不变
    提供商

    • 是的,你可以用这个
    备选方案

    • 如果这些
      SITE\u链接将只用于页眉和页脚,并且它们位于/shared文件夹中,我建议创建
      /constants
      (或您希望命名的任何目录名),以保存这些类型的公共/常量数据,并直接将它们的路径导入它们将使用的指定组件

    谢谢你的回复。我想知道哪种方法更好,有不同的方法。我想在这种情况下我会选择直接导入方法。只有一个问题,像API密钥这样的私有数据不是以这种方式安全吗,因为它们将包含在构建中?
    const siteLinks = new InjectionToken<string[]>('site links')
    
    providers: [
      { provide: siteLinks: useValue: SITE_LINKS }
    ]
    
    /constants
      site-links.constant.ts