DevGang
Авторизоваться

Создайте простой вход в систему с помощью Angular Material

В этой статье мы рассмотрим простой способ создания формы авторизации (входа в систему) с помощью Angular Material. Вы узнаете, как использовать компоненты для создания привлекательного и функционального интерфейса. Мы рассмотрим основные этапы, начиная с установки необходимых зависимостей и заканчивая реализацией логики авторизации.

Создать базовый проект

Первое, что нам нужно сделать, это установить NodeJS, если его нет на нашем компьютере, скачайте последнюю версию с официального сайта: NodeJS Download.

Затем установите последнюю версию Angular.

npm install -g @angular/cli

Затем, следуя документации на официальном сайте Angular, нам нужно создать проект.

ng new <project-name>

Вам будут представлены некоторые варианты конфигурации для вашего проекта. Используйте стрелки и клавиши ввода для навигации и выбора желаемых параметров.

Если у вас нет каких-либо предпочтений, просто нажмите клавишу ввода, чтобы принять параметры по умолчанию и продолжить настройку.

После того, как вы выберете параметры конфигурации и CLI выполнит настройку, вы должны увидеть следующее сообщение:

✔ Packages installed successfully.
 Successfully initialized git.

На этом этапе вы готовы запустить свой проект локально! Для этого нам нужно перейти в созданную нами папку проекта, а затем запустить следующую строку в терминале:

ng serve

После успешной загрузки проекта вы можете перейти по адресу http://localhost:4200/, чтобы увидеть, как работает ваше приложение. Теперь вы видите следующее представление.

Установить Angular Material

Чтобы установить Angular Material 18.1, нам нужно запустить следующую строку в терминале.

ng add @angular/material

Затем терминал попросит вас: выбрать тему, выбрать, хотите ли вы установить глобально шрифт материала, и выбрать, хотите ли вы установить анимацию Angular Material. Ниже приведены файлы, которые изменяет эта установка.

  • Добавьте зависимости проекта в package.json
  • Добавьте шрифт Roboto в свой index.html
  • Добавьте шрифт значка Material Design в свой index.html
  • Добавьте несколько глобальных стилей CSS:Удалить поля из телаУстановить height: 100% на html и bodyУстановите Roboto в качестве шрифта приложения по умолчанию

Все готово! Angular Material теперь настроен для использования в вашем приложении.

Создать компонент входа

Теперь нам нужно создать новую папку в проекте внутри папки /app под названием authentication.

Затем нам нужно создать новый компонент, написав в терминале следующую строку:

ng g c /authentication/login

И вы увидите следующий вывод на терминале:

CREATE src/app/authentication/login/login.component.html (21 bytes)
CREATE src/app/authentication/login/login.component.spec.ts (608 bytes)
CREATE src/app/authentication/login/login.component.ts (243 bytes)
CREATE src/app/authentication/login/login.component.scss (0 bytes)

Следующим шагом в компоненте была установка стилей:

login.component.css
mat-card {
    max-width: 400px;
    margin: 2em auto;
    text-align: center;
}

mat-form-field {
    display: block;
}

.card-title {
    color: #646464;
}

:host {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

footer {
    width: 100%;
    font-size: .9em;
    color: darkgray;
    text-align: center;
}

Также мы добавляем следующий HTML-код:

login.component.html
<mat-card>
    <mat-card-header>
        <h2>Sistema Soluciones Telcel</h2>
    </mat-card-header>
    <mat-card-content>
        <form #loginForm="ngForm" (submit)="login()">
            <h4 class="card-title">Acceso</h4>
            <mat-error *ngIf="!loginValid">
                El usuario y contraseña no son correctos!.
            </mat-error>
            <mat-form-field>
                <mat-label>Usuario</mat-label>
                <input matInput placeholder="Usuario" [(ngModel)]="user" name="username" required>
            </mat-form-field>
            <mat-form-field>
                <mat-label>Contraseña</mat-label>
                <input matInput type="password" placeholder="Contraseña" [(ngModel)]="password" name="password"
                    required>
            </mat-form-field>
            <button mat-raised-button color="primary" [disabled]="!loginForm.form.valid">Login</button>
        </form>
    </mat-card-content>
</mat-card>

<footer>
    Copyright © {{year}}
    <a href="#" rel="" target="_blank" title="Retrogemu">Retrogemu</a>
</footer>

И нужно написать следующий код в последнем файле, в этом коде есть все импортируемые данные, необходимые для получения Angular Material в представлении, и для обработки функций входа в систему, вызывающих API, который мы создали ранее в нашей команде, или обрабатываем локально в нашем Angular проекте.

login.component.ts
import { Component, ChangeDetectionStrategy } from '@angular/core';
import { RouterOutlet, Router } from '@angular/router';
import { AuthService } from '../../core/services/auth.service';
import { FormsModule } from '@angular/forms';
import { CommonModule } from '@angular/common';
import { MatCardModule } from '@angular/material/card';
import { MatInputModule } from '@angular/material/input';
import { MatButtonModule } from '@angular/material/button';
import { MatFormFieldModule } from '@angular/material/form-field';

const materialModules = [
  RouterOutlet,
  FormsModule,
  CommonModule,
  MatCardModule,
  MatInputModule,
  MatButtonModule,
  MatFormFieldModule
];

@Component({
  selector: 'app-login',
  standalone: true,
  imports: [materialModules],
  templateUrl: './login.component.html',
  styleUrl: './login.component.css',
  changeDetection: ChangeDetectionStrategy.OnPush
})

export default class LoginComponent {
  user: string = '';
  password: string = '';
  loginValid: boolean = true;
  year: number = new Date().getFullYear();

  constructor(private authService: AuthService, private router: Router) {

  }

  login(): void {
    this.authService.login(btoa(this.user), btoa(this.password)).subscribe({
      next: () => {
        this.loginValid = true;
        this.router.navigate(['index']);
      },
      error: (err) => this.loginValid = false
    });
  }
}

Теперь у нас есть функциональный логин для нашего проекта в Angular 18.1 и Angular Material 18.1, а также обработчик пользователя и пароля для отправки в API или локальное перемещение.

Источник:

#JavaScript #Angular
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу