私は、コンパイル時leaflet
ディレクティブに角度素材flex
属性を追加するディレクティブを作成しました。これにより、コンテナの幅は100%になります。次に、Mapオブジェクトがレンダリングを終了したときに呼び出されるLeafletから約束を得ます。リーフレットに、親コンテナのこの時点で正しく設定されているサイズを確認させるメソッドmap::invalidateSize()
が呼び出されます。
(function() {
angular.module('live')
.directive('ttLeafletFlexFit', leafletFlexFit);
leafletFlexFit.$inject = ['$timeout', 'leafletData'];
function leafletFlexFit($timeout, leafletData) {
var directive = {
restrict: 'A',
compile: compile
};
return directive;
function compile(tElem, attrs) {
tElem.attr('flex', '');
// A hack to get Leaflet to fill the flex container.
// @link https://github.com/tombatossals/angular-leaflet-directive/issues/950
leafletData.getMap().then(function (map) {
$timeout(function() {map.invalidateSize()});
});
}
}
})();
次に、リーフレットディレクティブ要素に属性を追加します。
<leaflet tt-leaflet-flex-fit></leaflet>
フレックスとアンギュラマテリアルが私の問題であったが、修正を実装する時間がないことを理解するのに少し時間がかかりました。ありがとう! –