我正在使用循环创建表,如果循环值与特定字符匹配,我想将反应形式的默认值设置为Repeat
,否则我想在反应形式中设置空值。以下是我的代码
打字稿
rDefault:string = "";
create(){
let form = this.fb.group({
rp:[this.rDefault]});
return form;
}
模板
<tbody *ngFor="let c of ch.vl; let i = index" [formGroupName]="i">
<tr class="ui-widget-content ui-datatable">
<td>
{{rpm[ofs+i].label}}
</td>
<td>
<p-dropdown formControlName="rp" [options]="rpm[ofs+i].label =='REPEAT'? compOpt : []" appendTo="body" [disabled]='rpm[ofs+i].label == "REPEAT"?false:true'></p-dropdown>
</td>
</tr>
</tbody>
如果{{rpm[ofs+i].label}}
等于“重复”,我想将默认表单值设置为“重复”,否则为空值。我该如何实现?
答案 0 :(得分:0)
为我的问题找到了解决方案,但我不知道这是否是正确的方法?
在每个循环中,我从[option]
调用另一个方法,并在该方法中设置值。
template file
<td>
<p-dropdown formControlName="rp" [options]="changeDefault(rpm[ofs+i].label)" appendTo="body" [disabled]='rpm[ofs+i].label == "REPEAT"?false:true'></p-dropdown>
</td>
Updated TS file
rDefault:string = "";
//this method will change value of rDefault
changeDefault(val){
this.rDefault = val == "REPEAT" ? "REPEAT" : "";
let rtnar = 'REPEAT'? this.compOpt : [];
return rtnar;
}
//
create(){
let form = this.fb.group({
rp:[this.rDefault]});
return form;
}