【问题标题】:How to disable a filed using form builder in Angular如何在 Angular 中使用表单构建器禁用字段
【发布时间】:2019-06-01 00:08:30
【问题描述】:

您好,我想根据条件角度表单生成器禁用归档/下拉:

我有 3 个下拉菜单,第一个下拉菜单将在页面加载时加载。当我选择第一个下拉菜单中的选项时,第二个应该启用,当我选择第二个选项时,第三个应该启用。

这是我尝试过的:

       ngOnInit(): void {

            this.someMethodToFetchDataForSelectbox();
            this.method1.subscribe(data => {
                this.data= data;
              }
            );
            this.constructForm();
          }

    constructForm() {
    this.form =  this.fb.group({
     listOfFruits: [''],
     listOfAnimals: [''],
listOfLetters: ['']
    });
this.form.get('listOfAnimals').disable();
    this.form.get('listOfLetters').disable();
    this.form.controls.listOfFruits.valueChanges.subscribe(value=>{
   his.forms.controls.listOfAnimals.enable();
      this.form.get('listOfLetters').disable(); 
//method to fetch list of animals from DB
fetchAnimals(value) ;

    });
    }
fetchAnimals(value) {
 this.form.controls.listOfAnimals.valueChanges.subscribe(value=>{
   this.forms.controls.listOfLetters.enable();
      //method to fetch list of letters from DB
fetchLetters(value) ;
  });
}

上面的方法我试过了,还是不行。。

【问题讨论】:

    标签: angular angular2-formbuilder


    【解决方案1】:

    你需要使用 valueChange 属性而不是 value

    this.form.controls.listOfFruits.valueChanges.subscribe(value => {
      //...
    })
    

    如果默认禁用表单控件

    constructForm() {
     this.form =  this.fb.group({
      listOfFruits: [''],
      listOfAnimals: ['']
     });
    
     this.form.get('listOfAnimals').disable(); // ?
     ....
    }
    

    【讨论】:

    • 工作谢谢:),小问题如何在此处默认禁用该文件
    • 乐于助人,我已经更新了禁用表单控件的答案@user2108383 ?
    • @user2108383 如果此答案解决了您的问题,您可以将其标记为已回答,因此该问题不会出现在搜索结果中的未回答问题中?
    • @malbaarmawi,我有一个快速的要求,我编辑了这个问题.. 过去 5-6 小时尝试表格找不到解决方案:(你能帮我.. 我编辑了这个问题..
    【解决方案2】:

    除了@malbarmawi 的回答之外,listOfAnimals 最初禁用

    this.form =  this.fb.group({
     listOfFruits: [''],
     listOfAnimals: [{value: '', disabled:true}]
    });
    
    this.form.controls.listOfFruits.valueChanges.subscribe(value => {
      (value) ? this.form.controls.listOfAnimals.enable() : this.form.controls.listOfAnimals.disable()
    });
    

    【讨论】:

    • 默认情况下禁用它的一些原因。 listOfAnimals: [{value: '', disabled:true}]
    猜你喜欢
    • 2020-11-30
    • 2011-08-23
    • 2018-11-13
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    相关资源
    最近更新 更多