Настройки. undefined Настройки.

Настройки.

Open in new window

Настройки.

Задача вынести настройки сайта в сервис.

Например мы хотим определить url для сервера RESTfull API.

Для этого используется InjectionToken. Он несет такую же функциональность что и OpaqueToken(более того он является наследником), он еще предоставляет возможность строго задать тип инжектируемой сущности.

Особенно это удобно, когда это сложный/составной тип с внутренними свойствами.

InjectionToken - предоставляет механизм внетрения произвольной сущности в компоненты.

Определим InjectionToken в файле settings.ts.

interface Settings {
  production: boolean;
  APIurl: string;
}

import {InjectionToken} from '@angular/core';

export const APP_CONFIG = new InjectionToken<Settings>('APP_CONFIG');

Добавим провайдер в главный модуль.

import { APP_CONFIG } from './settings';

  providers: [...
  {
    provide: APP_CONFIG,
    useValue: {
      production: false,
      APIurl: 'http://localhost:3000'
    }
  }
  ],

Использование в компоненте.

import { Inject } from '@angular/core';
import { APP_CONFIG } from './settings';

...

  constructor(@Inject(APP_CONFIG) private app_config){
    console.log(app_config);
  }

Other topics