Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Правильно объявление InjectionToken (https://javascript.ru/forum/angular/79650-pravilno-obyavlenie-injectiontoken.html)

sniffysko 04.03.2020 10:45

Правильно объявление InjectionToken
 
Добрый день!
Мне необходимо создать InjectionToken: переменную, которую я смогу инжектировать в мои компоненты. Есть замечательная документация, которая объясняет как это делается, но конкретно моего случая я не нашел. Либо не понял, что то он. :о)
Есть переменная routesRoot, с роутами приложения. Объявленная в модуле.

app.routes
export const routesRoot: Routes = [...роуты...]


app.module содержит такие строки:
import { routesRoot } from './app.routes';
{provide: 'ROUTES_TREE', useValue: routesRoot},


И все работает. Такое решение я написал с кондачка, не заглядывая в доки. Когда полез в документацию, то понял, что там несколько иной подход используют и решил сделать "как правильно". Получилось так:

app.module содержит такие строки:
import { routesRoot } from './app.routes';
export const ROUTES_TREE = new InjectionToken<Routes>('ROUTES_TREE');
{provide: ROUTES_TREE, useValue: routesRoot},


Все бы замечательно, только не работает. :о( Можете подсказать что именно не правильно?
Ошибка такая:
ERROR NullInjectorError: StaticInjectorError(AppModule)[ROUTES_TREE]:
StaticInjectorError(Platform: core)[ROUTES_TREE]:
NullInjectorError: No provider for ROUTES_TREE!

Спасибо.

destus 04.03.2020 11:36

Хм... вообще я ошибки не вижу. Вот даже создал пример, всё работает https://stackblitz.com/edit/angular-.../app.module.ts
Пересобирите проект, проверьте файлы :)

sniffysko 05.03.2020 13:23

Перепроверил. :о) Ошибка была в вызове внутри компонента. Спасибо большое запомощь!


Часовой пояс GMT +3, время: 14:42.