您好,我目前有一个5号角项目。我有一个名为createForm的方法。它基本上只会创建一个表单。但是,创建的表格更改取决于航班清单代码。如果航班清单代码ID为TAG_ON,则我将创建一个省略messagePrefixSMSValidator的表单,并将名为message的表单控件设置为空。所以下面是我的代码。
createForm() {
this.formGroup = this.fb.group(
{
defaultTemplate: [this.defaultInitialValue],
language: [null, Validators.required],
message: [ this.messagePrefix ? this.messagePrefix:'', [Validators.required]],
longUrl: ['']
},
{
validator: [
hasUrlTagValidator(TemplatesService.urlTag),
messagePrefixSMSValidator(this.messagePrefix? this.messagePrefix: null, 'message')
]
}
);
if(this.flight.inventory.code === FlightInventoryCode.TAG_ON) {
this.formGroup = this.fb.group(
{
defaultTemplate: [this.defaultInitialValue],
language: [null, Validators.required],
message: [ '', [Validators.required]],
longUrl: ['']
},
{
validator: [
hasUrlTagValidator(TemplatesService.urlTag),
]
}
);
}
}
所以有一种方法可以重写我的代码,使其看起来很简单。
非常感谢您的帮助 谢谢
答案 0 :(得分:0)
function createForm() {
const isTagOn = this.flight.inventory.code === FlightInventoryCode.TAG_ON;
const message = [
isTagOn ? "" : this.messagePrefix || "",
[Validators.required]
];
const validator = [hasUrlTagValidator(TemplatesService.urlTag)];
if (!isTagOn) {
validator.push(
messagePrefixSMSValidator(this.messagePrefix || null, "message")
);
}
this.formGroup = this.fb.group(
{
defaultTemplate: [this.defaultInitialValue],
language: [null, Validators.required],
message,
longUrl: [""]
},
{
validator
}
);
}