route page navigationend change angularjs angular angular2-directives

angularjs - page - router events angular 6



Registrar globalmente una directiva en angular2 (1)

Estoy desarrollando una aplicación Angular2. Necesito agregar un comportamiento especial a todos los enlaces para que en angular 1.xi escriba una directiva como esta:

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

En angular2 puedo escribir una directiva como esta:

@Directive({ selector: ''[href]'', }) export class MyHrefDirective { constructor() { // whatever } }

Pero, ¿cómo puedo decirle a la aplicación que use esa directiva globalmente? Tengo un montón de vistas con enlaces en ellos. ¿Tengo que importarlo y especificarlo en la matriz de directives en cada uno de esos componentes (que es MUCHO)?

Intenté inyectarlo a la función bootstrap como se supone que debes hacer con los servicios para tener una instancia global pero eso no funcionó


Tengo entendido que debe optar por todas las directivas personalizadas en el nivel de componente. Solo PLATFORM_DIRECTIVES se incluyen implícitamente (ngFor, ngIf etc.).

Sin embargo, puede registrar su propia directiva personalizada como PLATFORM_DIRECTIVE

import { provide, PLATFORM_DIRECTIVES } from ''@angular/core''; bootstrap(RootCmp, [ provide(PLATFORM_DIRECTIVES, {useValue: YourCustomDirective, multi: true}), ]);

Aquí hay un artículo que habla más sobre el proceso: http://blog.thoughtram.io/angular2/2015/11/23/multi-providers-in-angular-2.html

EDITAR: Considero que esto no es una preocupación ya que los componentes se declaran a nivel de módulo. Esto significa mucho menos repetición ya que ya no tiene que declarar componentes secundarios a nivel de componente individual.