2017-08-01 10 views
0

リストボックスでバインドしているjsonオブジェクトがあります。 UIにはmoveUp/movedown機能があり、ユーザはリストボックス内の項目の位置を並べ替えることができます。順序プロパティに基づいてアイテムをソートし、リストボックスにバインドするカスタムソート機能を記述しました。Angular2 - リストボックスで値が変更された後、ソート/デュアルバインディングが発生しない

MoveUp機能では、リストボックスアイテムの順序位置を変更した後でも、アイテムの位置が再配置されないソートは行われません。 ここには何が欠けていますか?

Angular2は、テンプレートにコードから2つの結合方法をサポートしていませんplunker

MoveUp() 
    { 
     var selectedOrdinal = this.selectedValues.ordinal; 
     var targetOrdinal = (selectedOrdinal != 1) ? selectedOrdinal - 1 : 1; 
     var temp = this.StoryPagesList; 
     temp[targetOrdinal].ordinal = selectedOrdinal; 
     temp[selectedOrdinal].ordinal = targetOrdinal; 

     this.StoryPagesList = temp; 
    } 

答えて

0

でコードを見つけてください。 ChangeDetectorRefを使用して変更検出を明示的にトリガする必要があります。それが好きで使用してください:

constructor(private ref: ChangeDetectorRef) {} 

次にあなたが変更された値のためのテンプレートを更新したいとき:

this.ref.detectChanges(); 
+0

は、コメントごとなどの変更をしましたが、それでもそれはUIには反映されません。 http://plnkr.co/edit/aHbWIQoNpbvtfAQmhF3u?p=preview – Krishnan

+0

私の推測では、ソートロジックは元の変数の変更を反映しておらず、ソートされていないということです。 – blackspacer

+0

ああ、強制的に並べ替えを適用する方法はありますか?つまり、並べ替えるためにイベントを発生させるのですか?任意のアイデア.. – Krishnan

関連する問題