2017-05-14 11 views
0

私は使用していますmusale/angular2-stripe すべてが機能しています、問題は私がコンポーネントから値を得るように見えないことです。角2は関数から値を得ることができません

 openCheckout() { 
    this.disabled = true; 
    var handler = (<any>window).StripeCheckout.configure({ 
     key: 'pk_test_tS0hXmE0hfvaaPytUdgRIdwD', 
     locale: 'auto', 
     token: function (token: any) { 
     debugger; 
     this.token = token; 
     //GET OUT FROM HERE< HTTP POST, EMMIT THE VALUE, ANYTHING! 
     debugger; 
     } 
    }); 

    handler.open({ 
     name: 'Demo Site', 
     description: '2 widgets', 
     amount: 2000 
    }); 

    this.globalListener = this.renderer.listenGlobal('window', 'popstate',() => { 
     handler.close(); 
    }); 
    } 

答えて

1

問題は、関数オブジェクトにthis範囲を変更する通常の関数を使用しているためと考えられます。

コールバックを設定してトークンを保存する前に別の変数をthisに設定することができます。

openCheckout() { 
    this.disabled = true; 
    let self=this; 
    var handler = (<any>window).StripeCheckout.configure({ 
     key: 'pk_test_tS0hXmE0hfvaaPytUdgRIdwD', 
     locale: 'auto', 
     token: function (t: any) { 
     debugger; 
     self.token = t; 
     //GET OUT FROM HERE< HTTP POST, EMMIT THE VALUE, ANYTHING! 
     debugger; 
     } 
    }); 

またはマイ好ましい代替thisを結合せず、その値はまだクラスのものであろうArrow Functionを使用することです。

openCheckout() { 
    this.disabled = true; 
    var handler = (<any>window).StripeCheckout.configure({ 
     key: 'pk_test_tS0hXmE0hfvaaPytUdgRIdwD', 
     locale: 'auto', 
     token: (t: any) => { 
     debugger; 
     this.token = t; 
     //GET OUT FROM HERE< HTTP POST, EMMIT THE VALUE, ANYTHING! 
     debugger; 
     } 
    }); 
関連する問題