#angular
#angular
Вопрос:
Я хотел бы взять данные, которые они вводят в моей форме сброса пароля, в которой есть только одно поле, которое является mail, и это mail, который вы вводите пользователю, вызываете его в другом компоненте и, если возможно, скрываете звездочками
Я пробовал с фрагментами кода, но я не очень хорошо понимаю, как это сделать с помощью ввода, вывода и eventmitter в angular.
Я делюсь с вами кодом, который у меня есть, и изображением того, чего я стремлюсь достичь
<div class="container-fluid forgot-container">
<div class="row">
<div class="col-md-12 text-center">
<div class="logo">
LOGO
</div>
<p class="subtitle">
Ingresa el correo electrónico registrado en la<br/> plataforma para recuperar tu contraseña.
</p>
<form [formGroup]="form">
<mat-form-field class="inputForm">
<input autocomplete="off" matInput placeholder="Correo electrónico" type="email" formControlName="email">
</mat-form-field>
<mat-error *ngIf="!email.valid">
{{getEmailError()}}
</mat-error>
<button (click)="goToInstructions();" class="btn-recovery" [disabled]="!form.valid" mat-flat-button >RECUPERAR CONTRASEÑA</button>
</form>
<button (click)="goToLogin()" class="btn-back" mat-flat-button >VOLVER</button>
</div>
</div>
</div>
Забыли пароль ts
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
import {FormControl, FormGroup, Validators} from '@angular/forms';
import { Router } from '@angular/router';
@Component({
selector: 'zonasegura-forgot-password',
templateUrl: './forgot-password.component.html',
styleUrls: ['./forgot-password.component.scss']
})
export class ForgotPasswordComponent implements OnInit {
constructor(private router: Router) { }
ngOnInit(): void {
}
goToLogin(){
this.router.navigate(['/log-in'])
}
goToInstructions(){
this.router.navigate(['/password-instruction'])
}
form: FormGroup = new FormGroup({
email: new FormControl('', [ Validators.email, Validators.required ])
});
get email() { return this.form.get('email'); }
getEmailError() {
if (this.email.hasError('email')) {
return 'Ingrese un correo electronico valido.';
}
if (this.email.hasError('required')) {
return 'Un correo es requerido.';
}
}
}
Ответ №1:
Итак, если я правильно вас понимаю, вы хотите получить значение из электронной почты пользователя, чтобы вы могли передать это значение в другую часть формы в сообщении?
Находится ли на 2 отдельных экземплярах страницы (как показано на рисунке)? или вы заполняете email -> перейти к следующему разделу (компоненту) с сообщением электронной почты в тексте?
Если все это находится на той же странице, что и изображение, создайте событие двусторонней привязки данных. Сохраните значение, и когда электронное письмо будет отправлено, сохраненное значение появится там, где когда-либо у вас было привязано к нему.
<form (submit)="onSubmit()">
<input [(ngModel)]="capturedEmail">
</form>
let capturedEmail: string;
onSubmit() {
return this.capturedEmail
Если это 2 отдельных события (что означает открытие компонентов)?
Существует несколько способов, которыми вы можете это сделать, все они включают хранение эфира данных в локальном хранилище или 2-х сторонние маршруты привязки данных, декораторы свойств, такие как viewshed (родительский и дочерний)
- пользователь заполняет форму электронной почты
- следующий компонент открывается с сообщением электронной почты, переданным в виде текста
Вы могли бы просто использовать обычный старый JavaScript, если вы не хотите хранить данные, и это для визуального эффекта?
Комментарии:
1. Спасибо за ваш ответ, как вы говорите, идея заключается в том, что вы вводите форму, а затем перенаправляетесь на другой компонент пример: забыли пароль перенаправление на пароль инструкция это хорошая практика, чтобы сделать это так? Или гораздо лучше сделать это в том же компоненте, забыл и текст с инструкциями. Следует иметь в виду, что эта часть программы еще не привязана к серверной части
Ответ №2:
Создайте компонент контейнера, который действует как контейнер для двух компонентов:
- Компонент, содержащий форму, в которой вы вводите идентификатор электронной почты.
- Компонент, содержащий сообщение, показывающее, что пароль был отправлен по электронной почте на *** email.
В компоненте контейнера должна быть переменная «display». Если значение display равно true, отобразите компонент 1 и скройте компонент 2. Если значение равно false, скройте компонент 1 и отобразите компонент 2. В компоненте 2 должен быть входной параметр, через который переменная «emailid», принадлежащая контейнерному компоненту, будет передаваться из контейнерного компонента в компонент 2.
Теперь, как только пользователь вводит идентификатор электронной почты и форма отправляется, генерирует событие вывода, содержащее идентификатор электронной почты в качестве передаваемого значения. Вызов события emit запускает функцию «toggleDisplay» компонента контейнера с emailid в качестве параметра, который переключает значение отображения, а также присваивает значение «emailId». Теперь, поскольку это значение emailId было передано в качестве входных данных компоненту 2, оно будет доступно компоненту 2 и может отображаться.
Комментарии:
1. Спасибо за ваш ответ, в зависимости от ответа моего руководителя разработки я буду реализовывать ваше решение на основе других ответов, полученных здесь