动态形成Angular2。条件字段可见性

时间:2016-07-21 09:48:56

标签: angular angular2-forms dynamic-forms

我想仅在使用动态表单的其他人中具有具体值时才显示字段。

我为类QuestionBase(app / question-base.ts)定义了一个新属性“condition:boolean” 我的意图是当其他人具有具体价值时,以恐怖的方式展示一个领域。我将此字段命名为“Conditional”

我认为我必须在app / dynamic-form-question.component.html的标签中加入任何类似* ngIf的句子来注入个性化条件,但我被困了。 *条件定义为字符串时,ngIf不评估question.condition。我找不到任何解决方案来定义app / question.service.ts中的表达式作为布尔值。

e.g.
      new TextboxQuestion({
        key: 'conditional',
        label: 'Conditional Field',
        type: 'text',
        condition: brave.value == solid, (something like this, brave is other field in this form)
        order: 5
      })

然后a将读取变化可见性的条件表达式。       

    <input *ngSwitchCase="'textbox'" [formControlName]="question.key"
            [id]="question.key" [type]="question.type">

    <select [id]="question.key" *ngSwitchCase="'dropdown'" [formControlName]="question.key">
      <option *ngFor="let opt of question.options" [value]="opt.key">{{opt.value}}</option>
    </select>

  </div> 

这是plunker。这个例子来自angular2教程,有一些变化 我搜索了很多关于动态表单的信息,这可能是因为我是Angular2的初学者。

非常感谢

1 个答案:

答案 0 :(得分:0)

给输入一个:'ngControl =“questionKey”'或者你想要的任何东西,它将在顶级questionKey:Control中的类中定义。然后在select元素上添加* ngIf =“questionKey.value”,如果value为true,将显示该元素。对于输入框和开关上的更具体的输入运行验证

$(document).ready(function() { $(".checkbox-inline input[type=checkbox]").click(function() { var selectedDays = ""; var tempArray = [] $("input:checked").each(function() { var name = $(this).val(); tempArray.push(name); }); selectedDays = tempArray.join(","); $(".summary").text(selectedDays); }); });

这就是我一般的做法