Angular выполняет обнаружение изменений в ответ на различные триггеры. События DOM, ajax-запросы и таймеры / наблюдаемые вызовут обнаружение изменений Angular.
Событие окна resize
является примером события DOM, которое инициирует обнаружение изменений.
Насколько я знаю, обнаружение изменений Angular не автоматически вызывается ResizeObserver
. Поэтому вам нужно явно указать Angular для обнаружения изменений, используя ChangeDetectorRef.detectChanges()
:
constructor(private changeDetector: ChangeDetectorRef) {}
ngAfterViewInit() {
const obs = new ResizeObserver(entries => {
// Perform updates in response to resize
// Then tell Angular to detect changes
this.changeDetector.detectChanges();
});
obs.observe(this.resizeDiv.nativeElement);
}
Вот пример StackBlitz .
Если вы заботитесь только об изменениях размеров области просмотра, нет необходимости использовать ResizeObserver
. Событие window resize
будет отлично работать во всех браузерах.
Да, вы можете сделать это. Напишите пользовательский форматер . Это просто функция, на которую вы передаете ссылку в своей colModel. Вы получаете ссылку на последний селектор ячеек в функции, поэтому все, что вы можете сделать с jQuery, вы можете сделать в форматере. В том числе изменить цвет / стиль.
Я бы установил красный цвет фона, если ячейка имеет значение xxx, иначе зеленый фон, если значение yyy.
Я написал этот код:
.....
colModel:[
{name:'id',index:'id', width:15,hidden:true, align:"center"},
{name:'title',index:'title', width:150, align:"center"},
{name:'start',index:'start', width:350, align:"center", sorttype:"date"},
{name:'fine',index:'fine', width:350, align:"center", sorttype:"date"},
{name:'completed',index:'completed', width:120, align:"center",formatter:infractionInFormatter},
],
.....
И эта функция похожа на ваш пример:
function infractionInFormatter(el, cellval, opts)
{
.....
}
Как мне ее установить?
Большое спасибо.