Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.12.2019, 12:08
Аспирант
Отправить личное сообщение для sniffysko Посмотреть профиль Найти все сообщения от sniffysko
 
Регистрация: 20.10.2009
Сообщений: 79

Принудительная перерисовка компонента
Есть проблема. При внесении изменений в данные компонент не перерисовывается.
Данные:
[
    {
        "id": 55,
        "name": "Интерфейс",
        "type": "section",
        "children": [
            {
                "id": 56,
                "parent_id": 55,
                "name": "01. Максимальная ширина диалога",
                "type": "string",
                "value": "600"
            },
            {
                "id": 57,
                "parent_id": 55,
                "name": "02. Максимальная высота диалога",
                "type": "string",
                "value": "800"
            }
        ]
    },
    {
        "id": 2,
        "name": "Общие настройки приложения",
        "type": "section",
        "children": [
            {
                "id": 47,
                "parent_id": 2,
                "name": "01. Титул в названиии сайта",
                "type": "string",
                "value": "Академия ДТЭК"
            },
            {
                "id": 52,
                "parent_id": 2,
                "name": "02. Адрес smtp сервера",
                "type": "string",
                "value": "smtp.dtek.com"
            }
        ]
    }
]

Все это выводится в виде mat-expansion-panel и может редактироваться.
Верхний уровень это рубрики, а все что в children, это содержимое expansion-panel. Если редактировать верхний уровень, то изменения отображаются корректно. Но если отредактировать дочерний элемент, то ангуляр не видит изменений и, соответственно, компонент не перерисовывает. Я ставил отлов события ngOnChanges и судя по ним изменений никто не видит. При этом, вывод в консоль говорит о том, что данные изменились.
От большой печали после внесения изменений в переменную данных, поставил detectChanges() но это результатов не дало.
Как заставить приложение принудительно перерисовать компонент?
Ответить с цитированием
  #2 (permalink)  
Старый 20.12.2019, 06:25
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Цитата:
поставил detectChanges() но это результатов не дало
а вы попробуйте markForCheck(), он же как раз действует от компонента в котором вызываем и вверх по иерархии. Ну или создайте тестовый пример в какой-нибудь онлайн IDE, например https://stackblitz.com/
Ответить с цитированием
  #3 (permalink)  
Старый 20.12.2019, 22:04
Аспирант
Отправить личное сообщение для sniffysko Посмотреть профиль Найти все сообщения от sniffysko
 
Регистрация: 20.10.2009
Сообщений: 79

markForCheck() тоже пробовал.
На счет stackblitz.com это вы хорошо посоветовали. Надо собраться. :о) Проект большой и эту задачу пока отложил. Ошибка неприятная, но не критичная. Теперь уже наверное до посленовогодних дней.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение переменной шаблона вложенного компонента shtangen Angular.js 1 08.10.2019 06:25
Правильное использование дублирующего компонента. Ambassador ExtJS 0 06.12.2018 18:26
React Router - re-render компонента при смене url smegol Библиотеки/Тулкиты/Фреймворки 9 29.09.2018 23:58
Объявление компонента в модулях sniffysko Angular.js 1 26.07.2018 12:58
draggable (запрет click для родителей компонента) khusamov ExtJS 5 13.04.2015 11:45