This is just very simple Angular 2 component that implements Google reCaptcha 2.
Install it from npm:
npm install angular2-recaptchaSystem.config({
map: {
'angular2-recaptcha': 'node_modules/angular2-recaptcha'
},
packages: {
app: {
format: 'register',
defaultExtension: 'js'
},
'angular2-recaptcha': {defaultExtension: 'js', main:'index'}
}
});...
import { ReCaptchaModule } from 'angular2-recaptcha';
... ...
@NgModule({
imports: [...,ReCaptchaModule]
})
...Use in template like below
<re-captcha site_key="<GOOGLE_RECAPTCHA_KEY>"></re-captcha>Where site_key is the Google reCaptcha public key. Optional parameters as follows:
- language One of the ISO language values supported by Google: https://developers.google.com/recaptcha/docs/language Note that due to the design of the reCaptcha API, only the first component on a page can change the language from default English.
- theme Either
light(default) ordark. - type Either
image(default) oraudio. - size Either
normal(default),compactorinvisible. - tabindex Tabindex for navigation, default 0.
- global If true, the reCaptcha script will be loaded from www.recaptcha.net instead of www.google.com
To catch the success callback, you will need to subscribe to the captchaResponse event. The response token will be passed in the $event parameter.
To wait for component to be loaded subscribe to loaded event.
<re-captcha (captchaResponse)="handleCorrectCaptcha($event)" (loaded)="sendCaptchaExecuteHere()" site_key="<GOOGLE_RECAPTCHA_KEY>"></re-captcha>The event captchaExpired is triggered when the displayed image has expired. It does not have any event parameters.
To access the methods, use @ViewChild.
import { ViewChild } from '@angular/core';
import { ReCaptchaComponent } from 'angular2-recaptcha';
export class RegisterComponent {
@ViewChild(ReCaptchaComponent) captcha: ReCaptchaComponent;
}You can request a new captcha to be displayed:
this.captcha.reset();The previous response can be retrieved:
let token = this.captcha.getResponse();