Google reCaptcha 未在 Angular 2 个应用中显示

Google reCaptcha not showing in Angular 2 app

我正在尝试在 Angular 2 应用程序中使用 Google reCaptcha。按照文档中的描述进行设置,如果 g-recaptcha 标签在主 HTML 页面中,则 reCaptcha 对话框将显示,但如果在任何组件中(无论是主应用程序组件,子组件),则不会显示组件等)

这个 reCaptcha 工作正常

<body>
  <div class="g-recaptcha" data-sitekey="your_site_key"></div>
</body>

但是下面的不会显示

@Component({
  selector: 'my-app',
  template: `
    <div>
      <h2>Hello {{name}}</h2>
    </div>
    <div class="g-recaptcha" data-sitekey="your_site_key"></div>
  `,
})

我可以在 Chrome 的开发人员工具中看到,当 reCaptcha 出现在 HTML 中时,它具有有效尺寸 (654x78)

但是在组件中呈现时尺寸无效 (654x0)。

我有一个 Plunker 在这里显示这个问题 - https://plnkr.co/edoI5Hiydkfwiyggps3e

我已经尝试将我自己的 CSS class 添加到 div,增加高度但仍然没有任何显示。我也尝试了各种CSS样式来尝试转换div,以及设置紧凑的样式。

控制台中没有关于任何错误的输出或任何正在修改的指示。

知道 Angular 2 中的什么可能导致属性出错吗?

谢谢

如果你想使用 google-recaptcha,你必须使用一个名为 angular2-google-recaptcha 的指令。您可以找到 here 以及如何安装和实施它的详细说明。至于为什么在 index.html 中有效的代码在 Angular 2 组件中不起作用,那是因为 Angular 2 以完全不同的方式呈现其 HTML 模板。不只是你想的 height 问题,看看这两者的区别: