【发布时间】:2021-12-12 03:37:22
【问题描述】:
这是在 Angular 中, 我想使用 variable 来改变我的 conditional statement 所以我不需要修改每个变量并再次输入 这是输入标记 HTML 中的代码 .
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
.
public form: FormGroup;
private formBuilder: FormBuilder
.
get f() { return this.form.controls; }
.
this.form = this.formBuilder.group({
id: ['00000000-0000-0000-0000-000000000000'],
name: ['', Validators.required],
email: ['', [Validators.required, Validators.pattern("^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,4}$")]],
oraganize: ['', Validators.required],
});
.
<input
...
[ngClass]="{'is-invalid': f.name.invalid && (f.name.dirty || f.name.touched)}"
>
所以每次有新的输入(例如姓名、电子邮件、组织化等)时,我的代码都会改变
我想构建一个函数,我可以传递一些字符串,并让它变得超级好,不用一直用长线进行修改。 例如:
public checkCondition(attribute: string): boolean{
return (`this.f.${attribute}.invalid && (this.f.${attribute}.dirty || this.f.${attribute}.touched)`);
}
所以我可以用作...
<input
...
[ngClass]="{'is-invalid': checkCondition("name")}"
>
请问,我可以这样做还是不这样做?还是仅适用于字符串,而不适用于条件?
【问题讨论】:
-
这应该是可能的,但发布更多代码可能会有所帮助(例如
this.f是什么)。使用打字稿,您应该可以访问复杂类型,并且每个字段可能具有相同的类型。在您的示例中,姓名、电子邮件、地址都应该具有相同的类型,其中包含脏、无效的字段。感动。无需将名称传递给函数,只需传递对象本身 checkCondition(f.name)。然后在您的 checkCondition 函数中,您可以检查 thing.valid、thing.dirty 等... -
指定您使用的内容对于获得问题的最佳答案很重要。我猜您可能正在以某种组合使用输入字段或表单。如果是这样的话,我很肯定这个网站上已经有问题和答案可以解决您的问题。也许这个? stackoverflow.com/questions/43553544/…
-
哦,我忘记了:P,我添加了一些更必要的代码。看看吧!
-
不,我不明白那个帖子(可能是我去纽比@-@)但我认为这不是我的意思,但顺便说一句,非常感谢你:)
标签: html angular typescript variables bootstrap-4