Вы должны держать Директиву об атрибутах отдельно от любого Компонента. Например:

г обновить директиву angularjs для использования в angular 4. Вот пример кода:

[myScores.js]

angular.module('app.components.directives.myScores', [])
.directive('myScores', function() {
  return {
    scope: {
      score: '=',
    },
    template: '<div>&gt;&gt;&gt; Your score is {{score}} &lt;&lt;&lt;',
    link: function(scope) {
      console.log("in myScores", scope)
    }
  };
});

[myScores.ts]

import { Directive, ElementRef, Injector, Input, Output, EventEmitter } from '@angular/core';
import { UpgradeComponent } from '@angular/upgrade/static';

@Directive({
  selector: 'my-scores'
})
export class MyScoresDirective extends UpgradeComponent {
  @Input() score: number;

  constructor(elementRef: ElementRef, injector: Injector) {
    super('myScores', elementRef, injector);
  }
}

Обратите внимание, что я использую UpgradeComponent для обновления директивы элемента myScores. Я пробовал то же самое в директиве атрибута, но получил ошибку. Есть ли способ обновить директиву атрибута?

Вот моя попытка обновить директиву атрибута:

[MakeGreen.js]

angular.module('app.components.directives.makeGreen', [])
.directive('makeGreen', function() {
  return {
    restrict: 'A',
    link: function(scope, element) {
      console.log("in makeGreen", scope)
      console.log("element", element)
      element.css('color', 'green');
    }
  };
});

[makeGreen.ts]

import { Directive, ElementRef, Injector, Input, Output, EventEmitter } from '@angular/core';
import { UpgradeComponent } from '@angular/upgrade/static';

@Directive({
  selector: '[makeGreen]'
})
export class MakeGreenDirective extends UpgradeComponent {
  @Input() count: number;
  @Output() clicked: EventEmitter<number>;

  constructor(elementRef: ElementRef, injector: Injector) {
    console.log("elementRef", elementRef.nativeElement)
    super('makeGreen', elementRef, injector);
  }
}

Я получаю сообщение об ошибке при загрузке страницы, которая имеет что-то вроде:

<div makeGreen>Text should be green</div>

Я получил эту ошибку:

Error: Directive 'makeGreen' is not a component, it is missing template.

Ответы на вопрос(1)

Ваш ответ на вопрос