Angular2:在MyComponent上找不到指令注释

我正在尝试组合一个angular2应用程序:我没有使用TypeScript,而是使用常规ES6和babel

我的文件看起来像这样:

//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);

然后使用带有两个预置的babel-loader ['es2015', 'stage-1']使用webpack进行编译。

当在浏览器中运行时会产生以下错误:

例外 :Token Promise!实例化时出错。
ORIGINAL EXCEPTION :在MyComponent上找不到指令注释

我已经尝试了向MyComponent添加明显的@Directive()注释,但是没有任何效果。


回答我自己的问题:

经过一番调查后,我发现Babel为注释/装饰器发出的不同于TypeScript的代码,因此它不能像上面那样使用。

相反,不是使用装饰器,而是可以在将返回装饰器实例数组的类上声明静态属性:

class MyComponent {

  ...

  static get annotations() {
    return [
      new Component({
        selector: 'my-app'
      }),
      new View({
        template: '<span>My First Angular 2 App</span>'
      })
    ];
  }
} 
链接地址: http://www.djcxy.com/p/30151.html

上一篇: Angular2: No Directive annotation found on MyComponent

下一篇: Vagrant and Microservices Dev Environment