当前位置:  开发笔记 > 前端 > 正文

在angular2中全局注册指令

如何解决《在angular2中全局注册指令》经验,为你挑选了1个好方法。

我正在开发一个Angular2应用程序.我需要为所有链接添加特殊行为,所以在角度1.xi中只会写一个这样的指令:

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

在angular2中,我可以编写如下指令:

@Directive({
    selector: '[href]',
})

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

但是我怎么能告诉应用程序全局使用该指令呢?我有很多关于它们的链接的观点.我是否必须导入它并directives在每个组件中的数组中指定它(这是很多)?

我尝试将它注入到bootstrap函数中,就像你应该使用服务来全局拥有一个实例但是没有用



1> TGH..:

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

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

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

编辑:我现在认为这不是一个问题,因为组件是在模块级别声明的.这意味着重复次数要少得多,因为您不再需要在单个组件级别声明子组件.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有