2017-10-07 4 views
0

私は次のクラスがあります。TypeScriptクラスのインスタンスを作成するには?

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

私は 'show'メソッドまたはそれが呼び出される方法を見る必要があると思います –

+0

... btw' declare 'キーワード - 私はそれが一般的に周囲の共同ntext。つまり、javascriptを出力しません。 –

答えて

1

私はあなた自身が問題ではないと思っています。しかし、角度依存性注入とその代わりにコンポーネントがどのように構成されているのでしょうか?

あなたが使用しているパッケージのソースコードを見ると、FlashMessagesComponentnot by FlashMessagesService itselfで実際に実装されているのがshowです。

角度の依存性注入を使わずに独自のインスタンスを作成するには、抽象クラスChangeDetectorRefのインスタンスを提供する必要があるため、扱いにくくなります。それ自体は他のものに依存する可能性があります。かなり厄介になってしまう。

コードのようなもので遊ぶのが助かりますが、実際の世界で使用したいことはありません。

import { FlashMessagesService, FlashMessagesComponent } from 'angular2-flash-messages'; 
let _flashMessagesService = new FlashMessagesService(); 
let component = new FlashMessagesComponent(_flashMessagesService, { detectChanges:() => {}}); 
console.log(_flashMessagesService.show) // [Function show] 

EDIT:

私はSOに直接ここで符号化されて(:(申し訳ありません)それをテストすることができませんでした、今より徹底的にそれをチェックすることがFlashMessagesComponent it not exportedているようですので、私ははっきりと表示されませんFlashMessagesModuleと角度依存性の注入ライフサイクルを使用せずにインスタンスを作成する方法

+0

' FlashMessagesComponent'が見つかりません – OPV

+0

どういう意味ですか? '{detectChanges:()=> {}};'? – OPV

+0

_I FlashMessagesComponent_を見つけることができません - 申し訳ありません、私はちょうどチェックして、エクスポートされていません](https://sourcegraph.com/github.com/moff/[email protected]/-/blob/module/index。ts) –

0
を使用

クラスのコンストラクタを作成する必要があります。

export class Flashmessages { 
    ... 
    //other vars 
    constructor(){ 
     this.myvar = "value"; 
    } 
} 
+0

どこですか?そして、何が構築にあるべきですか? – OPV

+2

私はこのエラーを引き起こすコンストラクタの不足を期待しないでしょう –

+0

私は宣言(インターフェイス)ですと思います: '宣言クラスFlashMessagesService {}' – OPV

0

活字体で、クラスのインスタンスを取得するための一般的な構文は次のとおりです。

VariableName:ClassType=new ClassConstructor 

か、2つ目は、自動的にタイプの注釈を生成します

Variablename=new ClassConstructor(). 

試してみることができます。

関連する問題