MDL не выполняет динамическую переоценку входных элементов, когда их значения изменяются программно, и я не нашел хорошего способа попросить его переоценить себя.
Хорошая новость заключается в том, что вы неВам не нужно чистить элемент и снова вызывать componentHandler.upgradeElement (), вам просто нужно добавить или удалить соответствующие классы для элемента, чтобы стиль изменился правильно.
В вашем случае вам просто нужно добавить 'is-disabled 'класс для отключенных элементов и удалить его из тех, которые не отключены:
if (element.disabled) {
element.parentNode.classList.add("is-disabled");
} else {
element.parentNode.classList.remove("is-disabled");
}
Существуют другие классы, такие как' is-readonly '(для полей только для чтения),' is-checked'(для флажков),' is-invalid '(для неверных входных данных) и несколько других.
Для моих проектов, использующих эту библиотеку, я создал небольшую вспомогательную функцию , которая сканировала бывведите поля под элементом и переоцените классы.После динамической загрузки данных я вызываю вспомогательную функцию, и она заботится об исправлении стилей для формы.
Возможно, есть лучший способ сделать это, но я не нашел его.