2016-04-16 4 views
1

Я проверил, как сделать инъекцию контроллеру. Но я не мог найти способ впрыска в компонент, перед контроллером.angularjs 1.5 компонент DI, используемый на шаблонеUrl

В приведенном ниже примере, я пытаюсь получить domainUrl от констант Я создал в другом месте.

Возможно ли сделать инъекцию для извлечения доменаUrl?

How to inject constants

ответ

1

Это проблема, которую я наткнулся, как хорошо. К сожалению, я не нашел простого решения для этого.

С помощью angular.directive() я вводил услугу url. С angular.component() вы больше не можете этого делать.

Вы можете использовать простой объект JS. Или, может быть, синглтон.

Я использую TypScript и в итоге использовал класс со статическими свойствами для этого.

Edit:

Просто хочу, чтобы продлить этот ответ с небольшим обновлением.

Поскольку мы больше не можем использовать механизм впрыска зависимостей AngularJS, порядок загрузки файлов важен, если вы хотите использовать дополнительный фрагмент кода для создания URL-адреса.

В следующем коде машинописного текста класс MyRoutes должен быть загружен перед любым угловым кодом для этого.

class NgMyComponent implements ng.IComponentOptions { 
    templateUrl = MyRoutes.templateBase + 'my-component.html'; 
    controller = MyComponent; 
    controllerAs = 'vm'; 
} 
class MyComponent { 
} 

angular 
    .module('MyModule') 
    .component('myComponent', new NgMyComponent); 

Простой способ уменьшить этот бит должен использовать функцию для шаблона URL-адрес, так что URL-адрес построен только тогда, когда компонент фактически создается, например, так:

templateUrl =() => MyRoutes.templateBase + 'my-component.html'; 
Смежные вопросы