范围输入不会反映模板驱动表单中的默认值 (Angular 2)

Range Input won't reflect default value in Template Driven Form (Angular 2)

我希望我的范围输入以默认值 0 加载。当页面加载时,每个输入默认设置为中间。当我检查元素时,我看到了这个

<input
    class="form-control ng-untouched ng-pristine ng-valid"
    step="1"
    type="range"
    ng-reflect-model=""
    name="my_own_job"
    id="bus_info_04_a_01_01"
    min="0"
    max="10"
    value="0"
>

最后你看到值确实被传入了。这是输入的样子,顺便说一下,它在 *ngFor 内部。

<input class="form-control" type="range" step="1"
    [attr.name]="ans.ctrlName"
    [attr.id]="ans.id"
    [attr.min]="Data.loExtreme"
    [attr.max]="Data.hiExtreme"
    [attr.value]="ans.value"
    [(ngModel)]="UserResponse[ans.respName]"
    #{{ans.respName}}="ngModel"
>

我也像这样动态创建我的变量

//From parent component
@Input() Data : Question;

//For dynamic variables for ngModel
UserResponse : { [ propName : string ] : string } = {};

//Function called in OnInit
loadResponses(){

     let data       : any           = this.Data;
     let control    : string        = data.ctrlName;
     let response   : string        = data.respName;
     let multiResp  : Array<any>    = data.answers;
     let defVal     : string        = '';
     let load       : Array<string> = [];

     load.push( control );

     if( response == '' || response == undefined ){

         if( this.Template == 'multi_fader' ){

             multiResp.forEach( resp => {

                 this.UserResponse[ resp.ctrlName ] = resp.answer;
                 this.UserResponse[ resp.respName ] = 0;

             });

         }
         else {

             multiResp.forEach( resp => {

                 this.UserResponse[ resp.ctrlName ] = resp.answer;
                 this.UserResponse[ resp.respName ] = defVal;

            });
        }
     }
     else {

         load.push(response);
         load.forEach( ctrl => { this.UserResponse[ ctrl ] = defVal; });

         this.UserResponse[ this.Data.ctrlName ] = this.Data.question;

    }
}

我尝试将值设置为 UserResponse[respName],但输入中的 value 属性 只显示为单词 value,旁边没有等号。我来回取出 value 属性 一起只留下 ngModel 东西以及注释掉设置默认值的函数部分以查看是否只有 value 属性 单独工作,不受函数的任何其他干扰,结果与传递的值相同,但输入设置在中间。我尝试将它设置为 1 只是为了看看 0 是否正在使它成为 null 但这没有任何区别。

我什至将 json 文件中输入的每个问题的 value 属性 更改为 1 并且它显示在检查中但没有更改输入的默认位置。有人可以阐明为什么会发生这种情况以及如何解决它吗?如果您需要查看其他内容,这里是整个机制的 Plunkr

如果您更改模板,

[attr.value]="ans.value"

到,

[(ngModel)]="ans.value"

它应该在范围输入视图中将值初始化为零(在 plunker 中确认)。不过不确定您对模板中的其他 ngModel 做了什么。