Javascript Angular-如何访问注释类方法

Javascript Angular-如何访问注释类方法,javascript,angular,typescript,annotations,angular5,Javascript,Angular,Typescript,Annotations,Angular5,我在Angular中声明了以下注释: class ModalContainer { public destroy: Function; public closeModal() { this.destroy(); } } export function Modal() { return function (target: any) { Object.assign(target.prototype, ModalContainer.pr

我在Angular中声明了以下注释:

class ModalContainer {
    public destroy: Function;
    public closeModal() {
        this.destroy();
    }
}

export function Modal() {
    return function (target: any) {
        Object.assign(target.prototype, ModalContainer.prototype);
    };
}
我想在组件内使用注释:

@Component({
    selector: 'my-component',
    templateUrl: 'my-component.template.html',
    styleUrls: ['my-component.style.scss']
})
@Modal()
export class MyComponent implements OnInit {
    private EVENT_SAVE = 'EVENT_SAVE';
    private EVENT_CANCEL = 'EVENT_CANCEL';
    private buttonClick(event: any, eventType: string){
        if (eventType === this.EVENT_CANCEL){
            this.closeModal();
        } else if(eventType === this.EVENT_SAVE){
            this.closeModal();
        }
    }
}
问题是,TypeScript无法编译,因为编译时不知道该方法。但是,当我在模板内使用相同的方法调用时,它就可以工作了。也就是说,原型是指定的

编译器显示以下错误消息:

ERROR in [at-loader] ./src/main/webapp/ui/src/my-component.component.ts:128:18
    TS2339: Property 'closeModal' does not exist on type 'MyComponent'.

有人知道我怎么能解决这个问题吗?

通过添加这一行,编译器将不再抱怨,并且可以正常工作

private closeModal: Function;
然后,该类将如下所示:

@Component({
    selector: 'my-component',
    templateUrl: 'my-component.template.html',
    styleUrls: ['my-component.style.scss']
})
@Modal()
export class MyComponent implements OnInit {
    private EVENT_SAVE = 'EVENT_SAVE';
    private EVENT_CANCEL = 'EVENT_CANCEL';
    private closeModal: Function;
    private buttonClick(event: any, eventType: string){
        if (eventType === this.EVENT_CANCEL){
            this.closeModal();
        } else if(eventType === this.EVENT_SAVE){
            this.closeModal();
        }
    }
}