我建议不要使用定制的解决方案,而是使用ng-metadata
库。您可以在https://github.com/ngParty/ng-metadata找到它。像这样,您的代码与 Angular 2 最兼容。正如自述文件中所述
没有黑客。没有覆盖。生产就绪。
我只是在使用此处答案中的定制解决方案后进行了切换,但是如果您立即使用此库会更容易。否则,您将不得不迁移所有小的语法更改。一个例子是这里的其他解决方案使用语法
@Component('moduleName', 'selectorName', {...})
而 Angular 2 使用
@Component({
selector: ...,
...
})
因此,如果您不ng-metadata
立即使用,您将大大增加以后迁移代码库的工作量。
编写组件的最佳实践的完整示例如下:
// hero.component.ts
import { Component, Inject, Input, Output, EventEmitter } from 'ng-metadata/core';
@Component({
selector: 'hero',
moduleId: module.id,
templateUrl: './hero.html'
})
export class HeroComponent {
@Input() name: string;
@Output() onCall = new EventEmitter<void>();
constructor(@Inject('$log') private $log: ng.ILogService){}
}
(从ng-metadata recipies复制)