ドロップダウンのリストがあり、ドロップダウンが変更されたときにそのボタンが表示されます。これを行うには、私は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;
});
}
基本的に私が解決しようとしている問題は、すべてのリスト項目は、ドロップダウンを持っているドロップダウンを使用して、リストの順序を設定し、ユーザを作ることです、ユーザが位置を選択して移動ボタンをクリックすると、リストは新しい順序で並べ替えられます。
にそれを設定し、変化検出を呼び出し、
false
に設定し、再作成するためにあなたが詳細に上記を説明することができます。.. –ない、それが動作するかどうか確認してください。私は '@ViewChild( 'select')selectと仮定したと思いますが、'#select = "ngModel" 'のためにコントロールを読み込みますが、そうは思わないでしょう。あなたの正確なユースケースを示すコードで新しい質問を作成することをお勧めします。 –