Login Form
Simple login form demonstrating authentication UI with email and password fields.
Live Demo
Overview
A minimal login form showing:
- Email input with validation
- Password input (masked)
- Remember me checkbox
- Submit button
- Clean, focused UI
Implementation
import { Component } from '@angular/core';
import { DynamicForm , FormConfig } from '@ng-forge/dynamic-forms';
@Component({
selector: 'app-login-form',
imports: [DynamicForm ],
template: `<form [dynamic-form]="config"></form>`,
})
export class LoginFormComponent {
config = {
// Define common validation messages at the form level
defaultValidationMessages: {
required: 'This field is required',
minLength: 'Must be at least characters',
},
fields: [
{
key: 'title',
type: 'text',
label: 'Sign In',
props: {
elementType: 'h2',
},
},
{
key: 'email',
type: 'input',
label: 'Email Address',
required: true,
email: true,
// Only specify custom message for 'email' - 'required' uses default
validationMessages: {
email: 'Please enter a valid email address',
},
props: {
type: 'email',
placeholder: 'your@email.com',
hint: 'Enter the email associated with your account',
},
},
{
key: 'password',
type: 'input',
label: 'Password',
required: true,
minLength: 8,
// Override default 'required' message with custom one
validationMessages: {
required: 'Password is required',
},
// 'minLength' will use default with interpolated
props: {
type: 'password',
placeholder: 'Enter your password',
},
},
{
key: 'remember',
type: 'checkbox',
label: 'Remember me for 30 days',
},
{
type: 'submit',
key: 'submit',
label: 'Sign In',
props: {
color: 'primary',
},
},
],
} as const satisfies FormConfig ;
}Key Features
Email Validation
Built-in email format validation:
{
key: 'email',
email: true, // Validates email format
validationMessages: {
email: 'Please enter a valid email',
},
}Password Security
Minimum length requirement and masked input:
{
key: 'password',
minLength: 8,
props: {
type: 'password', // Masks input
},
}Remember Me Option
Simple checkbox for persistent login:
{
key: 'remember',
type: 'checkbox',
label: 'Remember me',
}Common Enhancements
Add "Forgot Password" Link
{
type: 'text',
key: 'forgotLink',
label: '<a href="/forgot-password">Forgot your password?</a>',
}Social Login Buttons
For social login buttons, you can use text fields with links or handle this outside the form:
{
type: 'text',
key: 'socialText',
label: 'Or sign in with Google or GitHub',
}Note: Social login typically involves OAuth flows handled outside the form. Consider placing social login buttons in your component template rather than in the form configuration.
Add Sign Up Link
{
type: 'text',
key: 'signupText',
label: "Don't have an account? <a href='/signup'>Sign up</a>",
}Use Cases
- User authentication
- Admin panels
- Member portals
- Dashboard access
- Protected areas
Related Examples
User Registration - Account creationContact Form - Basic form with validation
Related Documentation
Validation - Form validation guideMaterial Integration - Material Design styling