Кожен запис на цій сторінці має ту саму форму: збірка зелена, аудит чистий, консоль мовчить, а на екрані порожньо або не те, що ви задумували. Компілятор цих помилок не бачить, бо кожна з них — коректна програма, яка просто описує інший компонент. Знайдіть заголовок, схожий на те, що ви бачите; під ним причина й лікування.
Ім'я у view.tree та ім'я методу в класі розійшлися, найчастіше регістром: exchange_form у дереві, exchangeForm у класі. Це дві різні властивості. Класову ніхто не викликає, деревна лишається зі значенням за замовчуванням, і ніхто про це не повідомляє.Імена всюди snake_case і мають збігатися літера в літеру. Після правки .view.ts перевірте, що кожне перевизначення досі називає наявну властивість; список для звірки — згенерований -view.tree/*.view.tree.d.ts поруч із деревом.
Це властивості $mol_string: hint — placeholder, enabled — вимкнений стан, type — тип поля. Задавайте їх там, де поле використано:1<= Password $mol_string2 hint \Password3 type \password4 enabled <= can_edit true5 value?<=> password?\Будь-яка інша властивість будь-якого іншого компонента шукається так само: відкрийте його .view.tree, як показує розділ Як читати вихідники.attr* потрібен для справжніх DOM-атрибутів, які компонент ще не моделює, і має власну пастку: блок, у якого першим рядком не йде ^, замінює весь словник атрибутів бази, тож написаний отак $mol_button втрачає disabled, role і tabindex. Почніть блок з ^, щоб успадкувати, а потім додавайте свої ключі:1attr *2^3 data_kind \primary
Рядок передали туди, де очікується список, і його розтягло по символах. Рядки починаються з \, списки — з /. Звичний випадок — sub, це список:1sub /<= label \Hello
Перевизначення випало з .view.ts. Дерево дає кожній властивості значення за замовчуванням, тож коли клас перестає перевизначати rows(), TypeScript задоволений, а список малюється порожнім. Тести, що перевіряють лише модель, лишаються зеленими, бо з моделлю все гаразд.На кожне перевизначення, від якого залежить екран, пишіть тест, що читає побачене користувачем: rows(), sub(), title() підвидів або DOM. Тестування показує і те, і те.
Метод із @ $mol_mem повернув проміс як своє значення: fetch(uri).then(...), async-метод або результат $mol_wire_async(this).load(). Проміс у комірці читається всіма як «ще обчислюється», а коли він розв'язується, комірка переобчислюється й видає свіжий проміс. Мережа працює, подання не бачить результату ніколи.Правильна форма синхронна: викличте this.$.$mol_fetch.json(uri) всередині комірки й поверніть розібране значення. Волокно призупиниться, доки не надійде відповідь, і перезапустить комірку, тож проміс у вашому коді не з'являється взагалі. Там, де асинхронна робота все ж має відбуватися осторонь, покладіть її результат в окрему комірку стану, а ефект нехай повертає прапорець чи ключ, але не проміс.Друга причина — проковтнута помилка: try/catch усередині комірки, що ловить призупинення разом зі справжніми збоями. Перекидайте все, що є Promise, або користуйтеся $mol_fail_catch, який робить цю перевірку за вас.