Как передать значение ngModel компоненту в Angular 6 - PullRequest
0 голосов
/ 09 мая 2019

Я работаю над проектом электронной коммерции Angular 6 и включаю в него платеж PayPal. Я добавил кнопку PayPal в HTML, где я получаю сумму в [(ngModel)], но я должен передать ее в файл компонента, чтобы ее можно было прочитать в конфигурации PayPal. Любое лучшее или альтернативное решение высоко ценится

Ниже приведены файлы:

  1. торговая телега-summary.html
<div *ngIf="cart$ | async as cart">
  <input type="number" [(ngModel)]="cart.totalPrice">
  <div id="paypal-checkout-btn"></div> 
</div>
  1. корзины покупок-summary.ts
totalPrice: number;

public ngAfterViewChecked(): void {
  const elementExists: boolean = !!document.getElementById('paypal-checkout-btn');
  if(elementExists && !this.addScript) {
    this.addPaypalScript().then(() => {
      paypal.Button.render({
        client: {
            sandbox: 'My sandbox API',
        },
        payment: (data, actions) => {
            return actions.payment.create({
                payment: {
                  transactions: [
                    {
                        amount: {
                            total:    this.totalPrice,
                            currency: 'USD'
                        },
                        payee:{email:'My Email ID'},
                    }
                ]
                }
            });
        },
        commit: true,
        locale: 'en_US',
        style: {
            size:   'medium', // tiny, small, medium
            color:  'blue', // orange, blue, silver
            shape:  'pill'    // pill, rect
        },
        env: 'sandbox', // Optional: specify 'sandbox' or 'production'
        onAuthorize: (data, actions) => {
            return actions.payment.execute().then((payment) => {
                console.log('payment 1 completed!');
            });
        },
        onCancel: (data) => {
            console.log('payment 1 was cancelled!');
        }
    }, '#paypal-checkout-btn');
      this.paypalLoad = false;
    });
  }
}

Здесь я получаю значение в [(ngModel)] как $ 182, которое я хочу передать в файл компонента, так как это сделать? Есть предложения ??

Вот скриншот общей цены товара enter image description here

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Поскольку cart$ является наблюдаемым, вам нужно либо подписаться на него, чтобы получить значение, либо использовать его в конвейерном операторе.

Попробуйте это:

cart$: Observable<any>;
totalPrice: number;

public ngAfterViewChecked(): void {
    const elementExists: boolean = !!document.getElementById('paypal-checkout-btn');

    cart$.subscribe((cart: any) => {
        this.totalPrice = cart.totalPrice;
    })

  if(elementExists && !this.addScript && this.totalPrice) {
    this.addPaypalScript().then(() => {
        paypal.Button.render({
            client: {
                sandbox: 'My sandbox API',
            },
            payment: (data, actions) => {
                return actions.payment.create({
                    payment: {
                        transactions: [
                            {
                                amount: {
                                    total: this.totalPrice,
                                    currency: 'USD'
                                },
                                payee: { email: 'My Email ID' },
                            }
                        ]
                    }
                });
            },
            commit: true,
            locale: 'en_US',
            style: {
                size: 'medium', // tiny, small, medium
                color: 'blue', // orange, blue, silver
                shape: 'pill'    // pill, rect
            },
            env: 'sandbox', // Optional: specify 'sandbox' or 'production'
            onAuthorize: (data, actions) => {
                return actions.payment.execute().then((payment) => {
                    console.log('payment 1 completed!');
                });
            },
            onCancel: (data) => {
                console.log('payment 1 was cancelled!');
            }
        }, '#paypal-checkout-btn');
        this.paypalLoad = false;
    });
}
0 голосов
/ 09 мая 2019

вместо totalPrice: число;в вашем component.ts используйте cert = {"totalPrice": 0};Иначе используйте totalPrice в вашем component.html вместо cert.totalPrice.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...