우리는 드롭 다운 목록을 가지고 있으며 언제 드롭 다운이 변경 될 때 그 옆에 단추가 표시됩니다. 이렇게하려면 formcontrol 더티 기능을 사용하고 있습니다. 처음에는 단추가 숨겨져 있고 드롭 다운이 더러워지면 단추를 구해 보겠습니다.각도 2의 양식 컨트롤을 재설정하는 방법
버튼을 클릭하면 다른 모든 버튼이 다시 숨겨져 다른 초기 값으로 재설정됩니다. 이 일을 성취하는 방법, 나의 이해에 따라 더러운 밭을 더럽지 않게 만드는 방법이 없기 때문입니다.
<div class="form-group">
<h4 >Person {{i+1}}</h4>
<div >
<div ><label class="control-label">Position</label></div>
<div>
<select [ngModel]="staff.position" (ngModelChange)="newPosition=$event;btn.hidden=0" #select="ngModel" name="position" placeholder="position">
<option *ngFor="let i of instituteObj.academic_staff;let i=index" [value]="i+1">{{i+1}}</option>
</select>
</div>
<div #btn [hidden]="!select.dirty" class="academic-move"><button (click)="changeStaffPosition(staff.position,newPosition);btn.hidden=1" type="button" class="btn btn-primary ">Move</button></div>
</div>
</div><br>
내 구성 요소의 기능은 다음과 같습니다
가changeStaffPosition(currentPosition,newPosition){
if(currentPosition < newPosition){
for(let staff of this.instituteObj.academic_staff){
if(staff.position > currentPosition && staff.position <= newPosition){
--staff.position;
}
}
this.instituteObj.academic_staff[currentPosition-1]['position'] = newPosition;
}
else{
for(let staff of this.instituteObj.academic_staff){
if(staff.position >= newPosition && staff.position < currentPosition){
++staff.position;
}
}
this.instituteObj.academic_staff[currentPosition-1]['position'] = newPosition;
}
this.instituteObj.academic_staff.sort((a,b) => {
if(a['position']<b['position']){return -1}
if(a['position']>b['position']){return 1}
return 0;
});
}
기본적으로 내가 해결하기 위해 노력하고 문제가리스트의 모든 항목이 드롭 다운이있는 드롭 다운을 사용하여 목록의 순서를 설정 한 사용자를 확인하는 것입니다, 사용자가 위치를 선택하고 이동 버튼을 클릭하면 목록이 새로운 순서로 재 배열됩니다.
당신이 그것을 작동하는 경우 –
확실하지 .. 자세히 위를 설명 할 수 변경 감지를 호출 다시
true
호출 변화 감지로 설정 (ChangeDetectorRef
을 주입하여 그 위에detectChanges()
전화),false
로 설정합니다. 나는'@ViewChild ('select') select;를 사용했다고 추측하지만'# select = "ngModel"'때문에 컨트롤을 읽을 것입니다. 정확한 유스 케이스를 나타내는 코드로 새로운 질문을 만드는 것이 좋습니다. –