Как вы создаете директивы Decorator в Angular 2.x? Я пишу против альфа-версии Angular и пытаюсь воспроизвести функциональность, обнаруженную в директиве AngularJS (1.x) ngClass. Ниже приведен фрагмент моей попытки создать собственный NgClass в Angular. Я хотел бы наблюдать значение некоторого выражения, которое может содержать хэш имен классов для логических выражений. По мере изменения этих выражений имена будут добавляться или удаляться из свойства classList элемента, к которому был применен декоратор.
Что не так с этим синтаксисом? Декоратор даже не является подходящим шаблоном для работы, и, может быть, мне следует создать директиву шаблона? Тем не менее, каков синтаксис объявления директив с помощью Angular? Я приму ответы на ES5, но я бы предпочел ES6 и AtScript.
Для контекста, я писал это как подготовку к докладу, в котором я сделал предварительный обзор того, как будет писать приложения с Angular 2 и выше.
@Decorator({
selector: '[ng-class]',
bind: {'NgClass': 'class'},
observe: {'ngClass': 'ngClassChanged'}
})
export class NgClass {
constructor(element:NgElement) {
this.element = element;
}
ngClassChanged(newValue) {
let classNames = [];
if(newValue){
console.log(newValue);
this.element.className = newValue;
}
else {
this.element.className = "";
}
}
}