外部模块的DI不工作

问题描述 投票:1回答:1

我在依赖注入外部模块时遇到问题:

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

angular typescript dependency-injection
1个回答
1
投票

现在的问题是,我应该提交一个问题,还是我错过了一些明显的问题

已经报道并修复:https://github.com/Microsoft/TypeScript/issues/3663

你现在可以使用ntypescript来解决这个问题:https://github.com/TypeStrong/ntypescript

© www.soinside.com 2019 - 2024. All rights reserved.