angularUs 1.5组件DI用于templateUrl

时间:2016-04-16 14:38:24

标签: angularjs angularjs-components

我已经检查了如何向控制器进行注射。但是我无法在控制器之前找到一种注入组件的方法。

在下面的示例中,我试图从我在其他地方创建的常量中获取domainUrl。

是否可以进行注射以检索 domainUrl

How to inject constants

1 个答案:

答案 0 :(得分:1)

这也是我遇到的问题。 不幸的是,我没有找到一个简单的解决方案。

使用angular.directive()我正在注入网址服务。使用angular.component(),您将无法再执行此操作。

您可以使用普通的JS对象。或者也许是一个单身人士。

我使用Typescript并最终使用具有静态属性的类来执行此操作。

编辑:

只想通过一个小小的更新来扩展这个答案。

因为我们不能再使用AngularJS的依赖注入机制,所以如果你想使用一些额外的代码来生成URL,那么加载文件的顺序很重要。

在下面的Typescript代码中,需要在任何角度代码之前加载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';