내 범위 입력을 기본값 0으로로드하고 싶습니다. 페이지를로드 할 때 기본적으로 가운데 입력이 설정됩니다. 내가 요소를 검사 할 때 난 당신이 값이 실제로 전달 된 볼 끝이범위 입력은 템플릿 기반 양식 (각도 2)에서 기본값을 반영하지 않습니다.
<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"
>
나는 또한 내가 UserResponse[respName]
에 값 만 입력에 value
속성을 설정하는 노력이
//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;
}
}
같은 동적 내 변수를 만드는거야가 바로 옆에 필적와 단어 value
으로 표시됩니다 그것. 앞뒤로 value
속성을 모두 꺼내서 ngModel
항목 만 남기고 기본값을 설정하는 함수의 부분을 주석 처리하여 value
속성 만이 함수에서 오는 다른 간섭없이 작동하는지 확인하고 값은 통과되었지만 입력은 중간에 설정되는 것과 같은 결과였습니다. 나는 어쩌면 0
이 null
을 만들었는지 알아보기 위해 1
으로 설정하려고했지만 아무런 차이가 없었습니다.
내 json
파일의 입력에 대한 각 질문의 value
속성을 변경하여 1
으로 변경 했는데도 검사에서 나타나지만 입력의 기본 배치는 변경되지 않습니다. 누군가 이런 일이 일어나는 이유와 그것을 고치는 방법에 대해 밝혀 줄 수 있습니까? 다른 일이 무엇인지 알아야 할 경우 여기에 전체 메커니즘 중 Plunkr이 있습니다. 그것은 (plunker에서 확인) 범위의 입력 뷰 값을 0으로 초기화한다
[(ngModel)]="ans.value"
템플릿으로 변경하면
대답에서 말했듯이, 내가 한 모든 것은 'question-shell.component.html'의 257 행에있는'[attr.value]'를'[(ngModel)]'로 변경 한 것뿐입니다. 템플릿에 다른 [(ngModel)] = "UserResponse [ans.respName]"'(라인 # 258)이 있습니다. 당신은 아마도 당신의 논리에 따라 그것을 바꿔야 만 할 것입니다. – amal
예. 나는 그것을 바꿔 치기하고 등록한 것을 보았습니다. 여러분이 이야기하고있는 다른 ngModel은 입력에 바인딩하기 위해 만든 동적 변수의 값을 통해 ans.value를 제공하려는 시도였습니다. 왜냐하면'UserResponse [resp.name]'은 함수에서 값을 읽어 들이기 때문에'ans.value'와 같은 값을 제공하기 때문에 정말 당황 스럽습니다. – Optiq
나는 둘 다 같은 가치를 지녔다고 생각하지 않는다! questions.json에서 resp.name =와 달리 value = 0을 참조하십시오. 예를 들어 답변 목록의 한 요소를 보자. { "대답"\t : "내가 좋아하는 일을하는 자신의 직업을 만드는 방법", "id"\t : "bus_info_04_a_01_01", "value"\t : "0" "ctrlName"\t : "my_own_job", "respName"\t : "my_own_job_resp"} –
amal