我想仅在使用动态表单的其他人中具有具体值时才显示字段。
我为类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的初学者。
非常感谢
答案 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);
});
});
这就是我一般的做法