2015-06-05 2 views
0

Я хочу создавать директивы, каждый из которых имеет свой собственный перевод. Все, что я, кажется, нахожу, это способ «глобально» установить все переводы (через app.config($translateProvider)) или пользовательский загрузчик, который кажется вроде излишним. К сожалению, я не могу ввести $ translateProvider в директиву (это нормально?), Что было бы именно то, что мне нужно.Определить переводы внутри директив

ответ

0

Вы не можете использовать Провайдеры во время запуска приложения. Вы можете использовать любой метод translationProvider.translations() или вы должны использовать асинхронные погрузчики, детали могут быть найдены in this GitHub issue.

Отрывок на провайдеров:
В Angular Documentation for Providers состояний:

Вы должны использовать рецепт поставщика только когда вы хотите открыть API для всей конфигурации приложения, которая должна быть выполнена до запуска приложения.

Для лучшего понимания прочитайте this article от Ben Clinkinbeard. Он показывает вам, как вы можете получить доступ к свойствам поставщика (в данном случае к языковому свойству) внутри директивы и как настроить локаль внутри функции конфигурации (которая запускается до того, как приложение «запустилось» (это так называемая конфигурация фаза) - это означает, что языковой стандарт уже установлен в вашем провайдере, если работает ваш директивный код). Я также рекомендую посмотреть на Ben's example repository.

Обратите внимание на использование bilingualButtonConfig внутри директивы, но использование bilingualButtonConfigProvider внутри .config() - функция на этапе конфигурации.

Если фаза конфигурации переполнена, доступ к провайдерам запрещен. Затем создаются службы, и приложение переходит на фазу запуска. И это твоя проблема. Вы пытаетесь получить доступ к провайдерам на этапе запуска, что угловато отрицательно.

+0

Помог ли мой ответ, наконец, решить вашу проблему? – ilmgb

Смежные вопросы