【发布时间】:2018-10-10 11:21:44
【问题描述】:
我需要输入 50 个具有相同域名 (gmail.com) 的电子邮件地址。
我使用的是响应式表单。我添加了一些我编写的代码,它对我不起作用。
https://stackblitz.com/edit/angular-wfwfow
谁能帮我解决这个问题?
emailPattern = "[a-zA-Z0-9_.+-,;]+@(?:(?:[a-zA-Z0-9-]+\.,;)?[a-zA-Z]+\.,;)?(gmail)\.com";
ngOnInit() {
this.accountingForm = this.fb.group({
'day' : [null, Validators.required],
'email': ['',
Validators.compose([
Validators.required,Validators.pattern(this.emailPattern),this.commaSepEmail
])
]
});
}
commaSepEmail = (control: AbstractControl): { [key: string]: any } | null => {
console.log("This is value:" + control.value);
if (!_.isEmpty(control.value)){
var emails= control.value.split(',');
const forbidden = emails.some((email:any) => Validators.email(new FormControl(email)));
console.log(forbidden);
return forbidden ? { 'email': { value: control.value.trim() } } : null;
}
};
<form [formGroup]="accountingForm" (ngSubmit)="generateSOR(accountingForm.value)">
<input formControlName="email" [pattern]="emailPattern" placeholder="Email Address">
<button type="submit" mat-raised-button class="mat-primary" [disabled]="!accountingForm.valid">Generate</button>
</form>
【问题讨论】:
-
您好,您能否详细说明一下它是如何不工作的?你的预期结果是什么,你的实际结果是什么?通过提供更多详细信息,它可以让任何想要提供帮助的人的生活更轻松。
-
嗨@Hugo Noro,非常感谢您抽出宝贵时间。我有一个生成按钮,如果我添加诸如“example@gmail.com”之类的电子邮件地址,该按钮将被启用,但如果我输入“example@gmail.com,test@gmail.com”,该按钮将被禁用。 ',' 之后没有得到电子邮件地址。
-
你想用 comasepEmail 功能实现什么?它给你正确的输出吗?
-
嗨@HugoNoro。请找到我的代码的网址。如果我添加超过 1 个电子邮件地址,则生成按钮会被禁用。 stackblitz.com/edit/angular-wfwfow
-
您好,感谢您提供代码链接。我建议您编辑您的问题以将链接作为问题的一部分包含在内,以便其他人更容易检查它。请在下面查看我的答案,如果它解决了您的问题,请不要忘记将其标记为已接受。
标签: angular typescript