2016-04-22 4 views
1

すべての列に対してheaderTooltipを有効にしたいのですが、別の表のすべての列に対してこれを繰り返す必要はありません。ui-grid:global/defaul columnDef

グローバルcolumnDefを設定するか、デフォルトを上書きする方法はありますか?

グローバルな方法がない場合は、テーブル単位でこれを行う方法にも興味があります。

答えて

2

すべての角度コンポーネントをカスタマイズする最適な方法は、ソースコードを見て、アプリケーションがコンポーネントソースをハックすることなくコンポーネントを変更できるデコレータを作成することです。この例では、カラム定義からカラム自体に設定をコピーする場合、GridColumn.prototype.updateColumnDef関数を変更する必要があることがわかります。独自のデフォルト値をインストールし(未定義の場合)、変更されていないメソッドをそのまま使用します。このようにして、個々のグリッドで新しいグローバルなデフォルトを引き続きオーバーライドできます。

angular.module(name).config(
    $provide => { 
     $provide.decorator('GridColumn', $delegate => { 
      const {updateColumnDef} = $delegate.prototype; 
      $delegate.prototype.updateColumnDef = function(colDef, isNew) { 
       if(colDef.headerTooltip === undefined) 
        colDef.headerTooltip = true; 
       updateColumnDef.call(this, colDef, isNew); 
      }; 
      return $delegate; 
     }); 
    } 
}); 
+0

私はデコレータについてよく知らなかった。私はこれがハッキングのまったく新しい道を開くと思う。ありがとう。 –

関連する問題