Angular2 alpha.31中的父注释

时间:2015-07-24 13:04:50

标签: annotations typescript angular

我正在尝试在Angular2 alpha31中添加Parent注释。

我使用这个import语句:

import {Parent} from 'angular2/annotations';

我还在angular2.d.ts中添加了以下内容:

declare module "angular2/annotations" {
    function Parent(): (target: any) => any;
    function Ancestor(): (target: any) => any;
}

我的.ts文件如下所示:

/// <reference path='../../../../../typings/angular2/angular2.d.ts' />

import {Component, View} from 'angular2/angular2';
import {Parent} from 'angular2/annotations';
import {Messenger} from 'components/messenger/messenger';

@Component({
    selector : 'compose',
    hostInjector : [Messenger]
})

@View({
    templateUrl: 'components/compose/compose.html'
})

export class Compose {

    title : string;
    message : string;
    messenger : Messenger;

    constructor(@Parent messenger:Messenger){
        this.messenger = messenger;
    }
}

但我一直在接受:

  

未捕获的TypeError:装饰器不是函数

我错过了什么? :)

谢谢!

2 个答案:

答案 0 :(得分:1)

我发现了问题:

constructor(@Ancestor @Inject(forwardRef(() => Messenger)) messenger : Messenger) {
    this.title = "I am the composer! I am child element of Messenger"
}

使用此功能并删除&#34; hostInjector:[Messenger]&#34;解决了我的问题。感谢您的建议。

答案 1 :(得分:0)

我相信在alpha-37中这样做的方法是@Host。

constructor(@Host() tabs:Tabs)

而不是@Parent,这对我来说至少证明是成功的。