角度模块的forRoot中的运行时值

时间:2018-01-29 13:38:38

标签: javascript angular module

在我的角度应用程序中,有一个名为Ngx-Stripe

的模块

我已将其定义为以下文档:

NgxStripeModule.forRoot('***your-stripe-publishable key***');

但问题是我在应用程序引导程序上没有得到这个键,当我使用条带输出任何角度库时,我不应该在角度app.module或全局像index.html中对其进行硬编码

用户进入付款页面后,我在api通话中收到此密钥。如何在此方案中定义此密钥?

2 个答案:

答案 0 :(得分:2)

我希望它是直截了当的,但我能够实现它的唯一方法是:

index.html (或者webpack注入的脚本)必须放在Angular的源代码之前:

<script>
  var STRIPE_KEY = 'paste it here';
</script>

<强> app.module.ts

declare var STRIPE_KEY;

// ...
NgxStripeModule.forRoot(STRIPE_KEY);

此处的问题是.forRoot()必须由Angular AoT编译器进行静态分析,因此它无法接受您希望它接受的内容...如何在获得密钥后设置密钥StripeService.changeKey(key: string)方法?

答案 1 :(得分:0)

为了延迟加载您的 Stripe 配置键,您可以使用 ngx-stripe 提供的 StripeFactory 创建您自己的 StripeService 实例。

查看此处的文档以获得完整说明:

https://richnologies.gitbook.io/ngx-stripe/core-concepts/service-factory