在angular2中进行编辑后,如果该字段具有值,如何保持启用状态

时间:2018-07-25 13:31:03

标签: angular typescript

如果我在第一个字段下拉列表中选择了第三个下拉值,则启用第二个字段。 因此,现在,如果我通过选择下拉列表的第3个值来赋值,并给第2个字段赋值,则会被采用。 现在,我去编辑功能并更改其他值,因为第二个字段被禁用,我的屁股为null或未定义。 因此,现在我希望第二个字段具有其值,如果第一字段在编辑模式下未更改

HTML:

TS:

private FormInit() {
    //Add
    if (!this.Details) {
      this.detailsForm = this.FB.group({
        Type: ['', Validators.required],
        ID: [{ value: 0, disabled: true }],
      });

    } else {
      // edit
      this.detailsForm = this.FB.group({
        Type: [this.Details.data.Type, Validators.required],
        SourceID: [{ value: this.Details.data.ID, disabled: true }],

      });
      if (this.Details.mode == 'readOnly') {
        this.detailsForm.disable();
      }
    }
  }

添加和编辑功能:

public save() {
    let addParams = this.detailsForm.value;
   addParams.Type = addParams.Type ? addParams.Type: 0;
    this.Service.add(addParams).subscribe(res => {
      console.log(res);
      this.successMessagePopUp(res);
    })
  }

  public update() {
    let updateParams = this.detailsForm.value;

    this.Service.update(updateParams).subscribe(res => {
      this.successMessagePopUp(res)
    })
  }

希望以一种方式解决此问题,如果选择了第3个下拉值,那么在编辑模式下,如果选择了其他值,我们可以保持第2个字段处于启用状态并禁用oly吗?

1 个答案:

答案 0 :(得分:1)

通常 disabled 值将在angular中显示为未定义。

PS:我想根据您的要求:

private FormInit() {
    if (!this.Details) {
      this.detailsForm = this.FB.group({
        Type: ['', Validators.required],
        ID: [{ value: 0, disabled: true }],
      });

    } else {
      // edit
      this.detailsForm = this.FB.group({
        Type: [this.Details.data.Type, Validators.required],
        ID: [{ value: this.Details.data.ID }],

      });

     if (this.Details.data.Type == 3)
     {
         this.detailsForm.get("ID").enable();
     }
     else
     {
         this.detailsForm.get("ID").disable();
     }

      if (this.Details.mode == 'readOnly') {
        this.detailsForm.disable();
      }
    }
  }