我遇到外部模块的依赖注入问题:
export class DealsModel {
foo() {
console.log('foo');
};
}
特别是这段代码:
import 'zone.js';
import 'reflect-metadata';
import 'es6-shim';
import { Component, View, bootstrap } from 'angular2/angular2';
import { DealsModel } from './models/dealsModel';
@Component({
selector: 'search-form',
viewInjector: [DealsModel],
})
@View({
templateUrl: '/Deals/SearchForm'
})
class SearchFormComponent {
constructor(da:DealsModel) {
console.log(da);
}
}
失败,因为.js生成(部分提交到此处)是:
SearchFormComponent = __decorate([
angular2_1.Component({
selector: 'search-form',
viewInjector: [deals_Model_1.DealsModel],
}),
angular2_1.View({
templateUrl: '/Deals/SearchForm'
}),
__metadata('design:paramtypes', [DealsModel]) // <-- problem
], SearchFormComponent);
return SearchFormComponent;
基本上__metadata
收到了错误的引用(应该得到deals_Model_1.DealsModel
)现在这可以用这种方法解决:
import 'zone.js';
import 'reflect-metadata';
import 'es6-shim';
import { Component, View, bootstrap } from 'angular2/angular2';
import * as dm from './models/dealsModel';
@Component({
selector: 'search-form',
viewInjector: [dm.DealsModel],
})
@View({
templateUrl: '/Deals/SearchForm'
})
class SearchFormComponent {
constructor(da:dm.DealsModel) {
console.log(da);
}
}
bootstrap(SearchFormComponent);
但它显然是一个黑客。 现在的问题是,我应该提交一个问题还是我错过了一些明显的问题?
我正在使用alpha.31
答案 0 :(得分:1)
现在的问题是,我应该提交一个问题,还是我错过了一些明显的问题
已经报告并修复:https://github.com/Microsoft/TypeScript/issues/3663
您现在可以使用ntypescript
来解决此问题:https://github.com/TypeStrong/ntypescript