This is just very simple Angular 2 component that implements Google reCaptcha 2.
Install it from npm:
npm install angular2-recaptcha
System.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),compact
orinvisible
. - 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();