コメントに記載されているとおり、これは醜い解決策でした。しかし、私はonPaymentMethodReceivedでトークンを取得できました。そして、その値を非表示の入力に追加して、フォームをサーバーに送信しました。私のフォームには特別な要件がありますので、ngNoForm属性を使用する必要がありました。
...
<input id="nonce" type="text" hidden [(ngModel)]="nonce" name="nonce">
...
</form>
ngOnInit() {
var url = window.location.href;
var id = this.getEmployeeUserId(url);
this.employeeId = id;
this.ghttp.getEmployeeByuserId(id)
.then((data)=>{
this.day30Price = data._addAmount;
this.day60Price = data._add2month;
this.day90Price = data._add3month;
});
this.splashhttp.getToken()
.then((res)=>{
var id = res._body;
braintree.setup(id, 'dropin', {
container: 'dropin-container',
onPaymentMethodReceived: function (obj) {
document.getElementById("nonce").value = obj.nonce;
var myForm = document.getElementById("myForm");
myForm.submit();
}
});
});
}
出典
2017-01-23 10:42:55
Dan
完全な開示:私はブレインツリーで働いています。 BraintreeのJavascript SDKとAngular 2の間には基本的な非互換性はありませんが、Angular 2を使用する例はありません。ここでの情報は解決策を提供するには不十分です。より多くのサポートを受けるには、あなたのコードとウェブサイトの詳細について[Braintree Support](https://support.braintreepayments.com/)に連絡してください。 – jake
同じことを探しています。 Braintreeの人はこれに答えましたか? –
私は応答を得た。彼らはangular2は正式にはサポートされていないが、angle2と互換性のないbraintree APIには何も根本的なものはない、と彼らは言った。私は定期的なjavascript/angular2の醜い混合物で動作しました。 – Dan