有没有一种优雅的方法可以重新编写我的角度代码?

时间:2019-08-01 11:11:41

标签: angular typescript

您好,我目前有一个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), 
                  ]
      }
    );
   }

  }

所以有一种方法可以重写我的代码,使其看起来很简单。

非常感谢您的帮助 谢谢

1 个答案:

答案 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
    }
  );
}