我有以下课程:
export declare class FlashMessagesService {
show: (text?: string, options?: Object) => void;
grayOut: (value: boolean) => void;
}
我尝试创建类的实例:
import { FlashMessagesService } from 'angular2-flash-messages';
let _flashMessagesService = new FlashMessagesService();
它会调用错误:
Cannot read property 'show' of undefined
我使用此library
答案 0 :(得分:1)
我认为你的问题不是打字稿本身,而是使用角度依赖注入以及如何组成组件。
如果您查看正在使用的软件包的源代码,您会看到FlashMessagesComponent和not by FlashMessagesService itself实际实现了show
函数。
所以要在没有angular的依赖注入的情况下自己创建它的实例,它会变得棘手,因为你还需要提供一个抽象类ChangeDetectorRef
的实例,它本身可能依赖于其他东西,所以它很快就会变得非常混乱。
import { FlashMessagesService, FlashMessagesComponent } from 'angular2-flash-messages';
let _flashMessagesService = new FlashMessagesService();
let component = new FlashMessagesComponent(_flashMessagesService, { detectChanges: () => {}} );
console.log(_flashMessagesService.show) // [Function show]
编辑:
我在SO上直接编码并且无法测试它(抱歉:(),现在检查它似乎更FlashMessagesComponent it not exported,所以我没有清楚地看到你创建一个实例的方法使用FlashMessagesModule
和角度依赖注入生命周期。
答案 1 :(得分:0)
您应该在之前为您的班级创建一个构造函数:
export class Flashmessages {
...
//other vars
constructor(){
this.myvar = "value";
}
}