首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Angular中全局注册指令

在Angular中全局注册指令
EN

Stack Overflow用户
提问于 2015-12-21 16:46:46
回答 1查看 5.6K关注 0票数 18

我正在开发一个Angular应用程序。我需要添加特殊的行为,所有的链接。在AngularJS中,只需编写如下指令:

代码语言:javascript
复制
angular.module('whatever.module', []).directive('href', function() {
    return {
        restrict: 'A',
        link: function($scope, $element, $attrs) {
            // do stuff
        }
    };
});

在Angular中,我可以像这样写一条指令:

代码语言:javascript
复制
@Directive({
    selector: '[href]',
})

export class MyHrefDirective {
    constructor() {
        // whatever
    }
}

但是我如何告诉应用程序全局使用该指令呢?我有一大堆带有链接的视图。我是否必须导入它并在每个组件的directives数组中指定它(这是一个很大的问题)?

我尝试将它注入到bootstrap函数中,就像您应该对服务所做的那样,以便在全局拥有一个实例,但是不能工作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-21 18:11:55

我的理解是,您必须选择组件级别的所有自定义指令。仅隐式包含PLATFORM_DIRECTIVES (ngFor、ngIf等)。

但是,您可以将自己的自定义指令注册为PLATFORM_DIRECTIVE

代码语言:javascript
复制
import { provide, PLATFORM_DIRECTIVES } from '@angular/core';

bootstrap(RootCmp, [
  provide(PLATFORM_DIRECTIVES, {useValue: YourCustomDirective, multi: true}),
]);

这里有一篇文章更多地讨论了这个过程:http://blog.thoughtram.io/angular2/2015/11/23/multi-providers-in-angular-2.html

编辑:我现在认为这不是什么问题,因为组件是在模块级别声明的。这意味着更少的重复,因为您不再需要在单个组件级别上声明子组件。

票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34391790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档