Home / வழிகாட்டிகள் / கோண தொடர்பு படிவ ஒருங்கிணைப்பு (தனி மற்றும் சிக்னல்கள்)
ஒருங்கிணைப்பு வழிகாட்டி · கோண & ஸ்பா

கோண தொடர்பு படிவ ஒருங்கிணைப்பு (தனி மற்றும் சிக்னல்கள்)

SMTP சேவையகத்தைப் பராமரிக்காமல் நம்பகமான தொடர்பு படிவ விநியோகத்திற்காக, தனியான கூறுகள், எதிர்வினை சமிக்ஞைகள் மற்றும் HttpClient ஆகியவற்றைப் பயன்படுத்தி Lugatu உடன் கோண 17/18+ பயன்பாடுகளை இணைக்கவும்.

1. ரியாக்டிவ் சிக்னல்கள் கொண்ட தனியான தொடர்பு படிவம் கூறு

நவீன கோணமானது, கனமான NgModules ஐ விட தனியான கூறுகள் மற்றும் சமிக்ஞைகளை ஆதரிக்கிறது. இந்த செயலாக்கமானது, வினைத்திறன் ஏற்றுதல், பிழை மற்றும் வெற்றி நிலைகள் ஆகியவற்றுடன் அணுகக்கூடிய தொடர்பு படிவத்தை லுகாட்டுக்கு நேரடியாகச் சமர்ப்பிக்கிறது.

contact-form.component.ts typescript
import { Component, signal, inject } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'app-contact-form',
  standalone: true,
  imports: [CommonModule, FormsModule],
  template: `
    <form (ngSubmit)="onSubmit()" class="space-y-4 max-w-md">
      <div>
        <label for="name" class="block text-sm font-semibold mb-1">Your Name</label>
        <input id="name" type="text" [(ngModel)]="name" name="name" required class="w-full border rounded-xl p-2.5" />
      </div>
      <div>
        <label for="email" class="block text-sm font-semibold mb-1">Email Address</label>
        <input id="email" type="email" [(ngModel)]="email" name="email" required class="w-full border rounded-xl p-2.5" />
      </div>
      <div>
        <label for="message" class="block text-sm font-semibold mb-1">Message</label>
        <textarea id="message" rows="4" [(ngModel)]="message" name="message" required class="w-full border rounded-xl p-2.5"></textarea>
      </div>

      <!-- Honeypot spam defense -->
      <input type="text" [(ngModel)]="gotcha" name="_gotcha" style="display:none !important" tabindex="-1" autocomplete="off" />

      <button type="submit" [disabled]="isSubmitting()" class="btn-primary-editorial py-2.5 px-6">
        {{ isSubmitting() ? 'Sending...' : 'Send Message' }}
      </button>

      <p *ngIf="isSuccess()" class="text-sm text-green-700 font-medium">Thank you! Your message has been received.</p>
      <p *ngIf="errorMessage()" class="text-sm text-red-600">{{ errorMessage() }}</p>
    </form>
  `,
})
export class ContactFormComponent {
  private http = inject(HttpClient);

  name = signal('');
  email = signal('');
  message = signal('');
  gotcha = signal('');

  isSubmitting = signal(false);
  isSuccess = signal(false);
  errorMessage = signal('');

  onSubmit() {
    if (this.gotcha()) return; // Silent discard for automated bot submissions

    this.isSubmitting.set(true);
    this.errorMessage.set('');

    const payload = {
      fields: {
        name: this.name(),
        email: this.email(),
        message: this.message(),
      },
      honeypot: this.gotcha(),
    };

    this.http.post('https://www.lugatu.com/api/v1/public/forms/YOUR_PUBLIC_FORM_ID/submissions', payload)
      .subscribe({
        next: () => {
          this.isSubmitting.set(false);
          this.isSuccess.set(true);
          this.name.set('');
          this.email.set('');
          this.message.set('');
        },
        error: () => {
          this.isSubmitting.set(false);
          this.errorMessage.set('Submission failed. Please try again.');
        },
      });
  }
}

2. SSR & Angular Universal Server-to-Server Forwarding

உங்கள் கோணப் பயன்பாடு கோண SSR (நோட் / எக்ஸ்பிரஸ் எஞ்சின்) உடன் இயங்கினால், உங்கள் Lugatu சர்வர்-டு-சர்வர் API விசையைப் பாதுகாக்க, சர்வர்-சைட் ரூட் ஹேண்ட்லர் மூலம் விசாரணைகளை ப்ராக்ஸி செய்யலாம்.

server.ts typescript
// Express / Node backend endpoint in Angular SSR
server.post('/api/contact', async (req, res) => {
  const { name, email, message, _gotcha } = req.body;
  if (_gotcha) return res.status(200).json({ ok: true });

  try {
    const response = await fetch(`https://www.lugatu.com/api/v1/forms/${process.env.LUGATU_FORM_ID}/submissions`, {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${process.env.LUGATU_API_KEY}`,
        'Content-Type': 'application/json',
        'Idempotency-Key': crypto.randomUUID(),
      },
      body: JSON.stringify({ fields: { name, email, message } }),
    });

    res.status(response.status).json({ ok: response.ok });
  } catch (error) {
    res.status(500).json({ error: 'Failed to deliver message' });
  }
});

3. பாட் டிஃபென்ஸ் & ஹனிபாட் உள்ளமைவு

Lugatu தானாகவே _gotcha புலத்தை ஆய்வு செய்கிறது. காட்சி: none மற்றும் tabindex="-1" ஐப் பயன்படுத்தி மனித பார்வையாளர்களுக்கு கண்ணுக்குத் தெரியாமல் வைக்கவும். ஒவ்வொரு DOM உள்ளீட்டையும் நிரப்பும் Spambots அமைதியான அடக்குமுறையைத் தூண்டும்.

tip

ஹனிபாட் உள்ளீடுகளுக்கு படிவ லேபிள்களை ஒருபோதும் பயன்படுத்த வேண்டாம். தானியங்குநிரப்புதலை முடக்கிவிட்டு, ஸ்கிரீன்-ரீடர் அணுகக்கூடிய பெயர்களிலிருந்து புலத்தை விலக்கவும்.

பாதுகாப்பு மற்றும் அங்கீகாரம் மாறாதது

பாதுகாப்பு மாறாதது: சர்வர்-டு-சர்வர் API விசைகள் (lug_live_...) ஒருபோதும் கிளையன்ட் பக்க கோண சொத்துக்கள் அல்லது environment.ts கோப்புகளில் தொகுக்கப்படக்கூடாது. நேரடி கிளையன்ட் சமர்ப்பிப்புகளுக்கு பொது இறுதிப் புள்ளியைப் பயன்படுத்தவும் அல்லது சர்வர் எண்ட் பாயிண்ட்ஸ் வழியாக முன்னோக்கி அனுப்பவும்.

சரிசெய்தல் & பொதுவான உட்செலுத்துதல் பிழைகள்

கோணத்திலிருந்து சமர்ப்பிக்கும் போது HTTP 403 FORBIDDEN_BROWSER_ORIGIN

எந்த உலாவியிலிருந்தும் குறுக்கு மூலமான சமர்ப்பிப்புகளை பொது படிவ இறுதிப்புள்ளிகள் அனுமதிக்கின்றன. நீங்கள் சர்வர்-டு-சர்வர் எண்ட்பாயிண்ட் (POST /api/v1/forms/{id}/submissions) ஐ கோணத்திலிருந்து நேரடியாக அழைக்கிறீர்கள் என்றால், பொது முடிவுப்புள்ளிக்கு (POST /api/v1/public/forms/{id}/submissions) அல்லது பின்தளத்தில் முன்னோக்கி செல்லவும்.

அடிக்கடி கேட்கப்படும் கேள்விகள்

கிளையன்ட் ஹைட்ரேஷனுடன் கோண SSRஐ Lugatu ஆதரிக்கிறதா?

ஆம். Lugatu பொது படிவ சமர்ப்பிப்புகள் கிளையன்ட் பக்க ஃபெட்ச் அல்லது HttpClient வழியாக பயனர் தொடர்புக்குப் பிறகு செய்யப்படுகின்றன, இது கோண SSR மற்றும் கிளையன்ட் ஹைட்ரேஷனுடன் முற்றிலும் இணக்கமானது.

உங்கள் படிவத்தின் இறுதிப்புள்ளியை உருவாக்கத் தயாரா?

நொடிகளில் இலவசமாகத் தொடங்குங்கள். கடன் அட்டை தேவையில்லை.

இலவசமாக தொடங்கவும் →