如何以反应形式动态设置默认值?

时间:2018-11-05 10:54:56

标签: javascript angular typescript

我正在使用循环创建表,如果循环值与特定字符匹配,我想将反应形式的默认值设置为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}}等于“重复”,我想将默认表单值设置为“重复”,否则为空值。我该如何实现?

1 个答案:

答案 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;
}