Angular 2.x で Decorator ディレクティブを作成するにはどうすればよいですか? 私は Angular のアルファ版に対して書いており、AngularJS (1.x) ディレクティブ ngClass にある機能を再現しようとしていました。以下は、Angular で自分の NgClass を試したときのスニペットです。私がやりたいのは、ブール式へのクラス名のハッシュを含む可能性のある式の値を観察することです。これらの式が変更されると、デコレータが適用された要素の 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 = "";
}
}
}