2017-06-12 8 views
-2

角度4と活字体を使用してこの機能を脂肪アロー私が持っている

 
    

 @Injectable() 
    export class XService { 
    display: (message?: string) => Promise<boolean>;  
    } 

    @Component({ 
    templateUrl: './app/x/x.html', 
    styleUrls: ['./app/x/x.component.css'] 
    }) 
    export class XEditComponent { 
    constructor(private _xService: XService) { } 
    deleteX(): void { 
     let msg = "Do you really want to delete !"; 
     this._xService.display(msg).then((responseOk) => { 
     //..... 
     }); 
    } 
} 

を定義しますが、常に例外TypeError「表示」を取得していない機能は関数ではありません。

+4

実際にtを生成するコードの部分を追加すると便利です彼は誤りです。どのようにこの機能を実行しようとしていますか? –

+0

あなたは 'display'を関数として宣言しましたが、それには何が割り当てられていますか?値が割り当てられていなければ、 'undefined'となり、あなたが関数として呼び出そうとすると、記述したエラーが発生します。 – cartant

答えて

2

実際には関数を定義していません。あなたはそのタイプだけを定義しました。今すぐdisplayは未定義です。

関数を定義:

export class XService { 
    display: (message?: string) => Promise<boolean> = (message) => { 
     // Do something more useful here 
     return Promise.resolve(true); 
    } 
} 

それとも、型宣言を削除し、コンパイラが型を推論させることができます:

export class XService { 
    display = (message: string | undefined): Promise<boolean> => { 
     // Do something more useful here 
     return Promise.resolve(true); 
    } 
} 

それとも、メソッドの構文の代わりに、プロパティ構文にあなたの宣言を変更することができます:

export class XService { 
    display(message: string | undefined): Promise<boolean> { 
     // Do something more useful here 
     return Promise.resolve(true); 
    } 
} 
関連する問題