2016-03-30 24 views
2

Açısal 2.0.0-beta.8 ile @Component dekoratörünü genişleten birkaç özel dekoratör oluşturdum. Açısal2 bileşen dekoratörünü genişletme

Bu kodu kullanmış olduğunuz yapmak için:

import {..., View } from 'angular2/core'; 

... 

export var MyCustomComponent:ComponentFactory = 
    <ComponentFactory>makeDecorator(MyCustomComponentMetadata, (fn:any) => fn.View = View); 

Şimdi, açısal 2.0.0-beta.12 ile, 'Görünüm' dekoratör böylece ithalat hata atmak düşmüş angular2' çünkü/core '' export 'üyesi yok.

Özel bir bileşen dekoratör nasıl oluşturmalıyım?

+1

Bu sizin için ne soruyorsun bana net değil yapabilirsiniz. '@Component()' + '@View()' sadece ''Component()' haline geldiler '' @View() 'yerine' @Component() 'yi genişletemez misiniz? –

+0

'MyCustomComponent' dekoratörünü yapmak için, ikinci argüman olarak' makeDecorator' işlevini çağırmalıyım, '(fn: any) => fn.View = View'. Bunun derlenebilmesi için 'View' i içe aktarmam gerekiyor. '@View()' dekoratörünü değil, sadece '@Component() 'dekoratörünü genişletmek istemiyorum. – Gigitsu

+0

"Bileşen" i kullanamazsınız, görünmek için durur görünür. –

cevap

4

Sen

import {Component} from 'angular2/angular2'; 
import {MyCustomComponentMetadata} from ...; 

export function MyCustomComponent(config: MyCustomComponentMetadata) { 
    return function(cls) { 
    var annotations = Reflect.getMetadata('annotations', cls) || []; 
    annotations.push(new Component(config)); 
    Reflect.defineMetadata('annotations', annotations, cls); 
    return cls; 
    }; 
}; 
+0

Bu kodu gereksinimlerime uyacak şekilde biraz değiştirdim ve harika görünüyor! Bir soru, neden yapmam lazım const _reflect: any = Reflect; '? Reflect’i kullanabilir miyim? – Gigitsu

+1

emin .... güncellendi – Luca