2016-08-11 18 views
0

私は、ユーザーが項目を追加できるアジェンダ項目の事前レンダリングされた配列を持ち、アイテムに必要な予定表のどの位置にも入力します。Typescript - 動的にidを配列とソートに追加する

コンストラクタで配列:

this.agendaItems = [{ 
     id: 1, 
     subject: 'Opening of the meeting' 
    }, { 
     id: 2, 
     subject: 'Election of chairman' 
    }, { 
     id: 3, 
     subject: 'Approval of the agenda' 
    }, { 
     id: 4, 
     subject: 'Presentation of the annual report and audit report' 
    }, { 
     id: 5, 
     subject: 'Adjurnement of the meeting' 
    }, 
]; 

そして配列にagendaItemをプッシュする方法:

saveAgendaItem(num: number, subj: string) { 
    var item = {id: num, subject : subj} 
    this.agendaItems.push(item); 
} 

これは動作しますが、ここでは私の問題では:ユーザーが追加したいとしましょうポジション4(id)の新しい項目。私はする必要があります:

  1. idを順番に表示します。

  2. プッシュ前の項目に新しい項目の後に来るすべてのアイテムの位置5にありません4とも

  3. 再書き込みのidの。

これをタイプスクリプトでどのように実現するかはわかりません。

アイデア?

答えて

0

原則として、「id」を変更することはお勧めできません。 IDがちょうど位置を表すなら、多分あなたはそれを必要としません。 (How to insert an item into an array at a specific index?を参照)

とにかく、オブジェクトの挿入について、あなたはspliceを使用する必要があり

それは何かのようになります:this.agendaItems.splice(4, 0, item)

renumerationについては、私はすべてのforループを横断することをお勧めアイテムを希望の位置から最後のアイテムに変更し、 'id'を変更します。

+0

私はアジェンダのためにIDを必要とするので、すべての参加者が現在どのような問題を扱っているのか知っています。しかし、IDはアジェンダの位置を示すだけです – Tess