Угловая сетка 2 изменяет размеры виджета с помощью кнопки
У меня есть элемент гридстера, как показано ниже, и использую https://github.com/tiberiuzuld/angular-gridster2
<gridster-item [item]="myAptInfolet" class="shadow">
<app-my-appointments-infolet></app-my-appointments-infolet>
</gridster-item>
.ts
this.myAptInfolet = {cols: 1, rows: 2, y: 0, x: 4}
функция изменения размера
test(){
this.myAptInfolet.cols = 2
this.options.api.resize()
}
но ничего не происходит нет ошибки в консоли. пожалуйста, порекомендуйте
1 ответ
Я новичок в angular-gridster2, но мне удалось применить некоторые динамические изменения к макету моего гридстера, поэтому я постараюсь вам помочь.
Я не вижу, откуда берется ваше свойство "options", но оно должно быть экземпляром GridsterConfig, поэтому начало вашего файла.ts должно выглядеть так:
import { GridsterConfig, GridsterItem } from 'angular-gridster2';
options: GridsterConfig;
После того, как вы определили свои параметры, вы можете обновить макет вашего гридстера, вызвав метод api optionsChanged следующим образом:
test(){
this.myAptInfolet.cols = 2;
this.options.api.optionsChanged();
}
Вы можете обратиться к https://github.com/tiberiuzuld/angular-gridster2, чтобы найти очень маленький и чистый пример того, как динамически взаимодействовать с элементами и изменять макет сетки:
import { GridsterConfig, GridsterItem } from 'angular-gridster2';
options: GridsterConfig;
dashboard: Array<GridsterItem>;
static itemChange(item, itemComponent) {
console.info('itemChanged', item, itemComponent);
}
static itemResize(item, itemComponent) {
console.info('itemResized', item, itemComponent);
}
ngOnInit() {
this.options = {
itemChangeCallback: AppComponent.itemChange,
itemResizeCallback: AppComponent.itemResize,
};
this.dashboard = [
{cols: 2, rows: 1, y: 0, x: 0},
{cols: 2, rows: 2, y: 0, x: 2}
];
}
changedOptions() {
this.options.api.optionsChanged();
}
removeItem(item) {
this.dashboard.splice(this.dashboard.indexOf(item), 1);
}
addItem() {
this.dashboard.push({});
}
Я надеюсь, что это может помочь.
Вы не передавали ссылку на элемент с измененным размером в свой метод test()
. Основываясь на ответе Sebapabst0, вот образец StackBlitz: https://stackblitz.com/edit/angular-ivy-jjati4
Это работает для меня:
import { GridsterConfig, GridsterItem } from 'angular-gridster2';
options: GridsterConfig;
dashboard: Array<GridsterItem>;
ngOnInit() {
this.options = {
itemResizeCallback: (item: GridsterItem, itemComponent: GridsterItemComponentInterface) => {
this.updateSizeOnServer(item, itemComponent);
}
};
this.dashboard = [
{cols: 2, rows: 1, y: 0, x: 0},
{cols: 2, rows: 2, y: 0, x: 2}
];
}
updateSizeOnServer(item, itemComponent) {
// call some API tu update the size
}