2015-11-02 13 views
7

ben birlikte biraz angular2 app koymak çalışıyorum üzerinde bulunan: babel ileAngular2: Hayır Yönerge açıklama MyComponent

dosyalarımı ben typescript kullanmıyorum ziyade düzenli ES6 şuna benzer:

: tarayıcıda bunun üretir aşağıdaki hatayı çalıştırdığınızda bu daha sonra iki istasyon hafızalı babel-yükleyici kullanarak WebPack ile derlenmiş
//mycomponent.js 
import { Component, View } from 'angular2/angular2'; 

@Component({ 
    selector: 'my-app' 
}) 
@View({ 
    template: '<h1>My First Angular 2 App</h1>' 
}) 
class MyComponent { 
    constructor() { 
    } 
    get prop() { 
    return 'hello'; 
    } 
} 

export { MyComponent }; 


// index.js 
import 'zone.js'; 
import 'reflect-metadata'; 

import { MyComponent } from './mycomponent'; 
import { bootstrap } from 'angular2/angular2'; 

bootstrap(MyComponent); 

['es2015', 'stage-1'] etkin 0

EXCEPTION: Error during instantiation of Token Promise!.
ORIGINAL EXCEPTION: No Directive annotation found on MyComponent

Açıklamam @Directive() ekini MyComponent öğesine eklemeyi denedim, ancak bunun hiçbir etkisi olmadı.

+2

'bir açıklama ve saf typescript olup. JavaScript eşdeğeri yok. ES7'deki (!) Dekoratörler farklı bir şeydir. Yani, @ Bileşeni kullandığınızda, TypeScript kullanırsınız. – zeroflagL

cevap

3

Kendi sorumu yanıtlayan: Ben Babil typescript yaptığından daha ek açıklamalar/dekoratörler için farklı bir kod yayar öğrendim soruşturmanın biraz sonra

, bu nedenle yukarıdaki gibi kullanılamaz.

Bunun yerine, oldukça dekoratör kullanmak yerine, dekoratörü örneklerinin dizi dönmek sınıf statik özelliği bildirmek mümkündür: Directive` @

class MyComponent { 

    ... 

    static get annotations() { 
    return [ 
     new Component({ 
     selector: 'my-app' 
     }), 
     new View({ 
     template: '<span>My First Angular 2 App</span>' 
     }) 
    ]; 
    } 
} 
+1

Ayrıca ES7 dekoratörler ile yapılabilir olması gerektiğinden eminim. Https://github.com/angular/angular/issues/3470 – estus

+0

'u da kontrol edin Aynı sorunu yaşadım, tarayıcımın önbelleğini temizledim ve hata gitti. Belki birisi bunu yararlı bulur –