Выдача значка - angular2-mdl 4.0.1 (Angular 4)

Я использую значки следующим образом:

<mdl-icon [mdl-badge]="myCount" mdl-badge-overlap>some_icon</mdl-icon>

Когда myCount:number равно null, версия mdl для Angular 2 использовалась для скрытия значка. Текущая версия (4.0.1 с Angular 4) показывает значок с нулевым текстом.

Однако пример (динамические эксперименты) на странице a2MDL работает правильно - при удалении числа из поля ввода значок скрывается. Я что-то пропустил?

1 ответ

Решение

Интересно!

Что изменилось между версией 2 и 4, так это то, что версия 2 использует setElementAttribute от Renderer учебный класс:

this.renderer.setElementAttribute(this.el, 'data-badge', this.mdlBadgeContent);

Renderer устарела и заменена Renderer2:

this.renderer.setAttribute(this.el, 'data-badge', this.mdlBadgeContent);

Но реализация изменилась: Версия 2: https://github.com/angular/angular/blob/2.4.x/modules/%40angular/platform-browser/src/dom/dom_renderer.ts#L199

Версия 4 https://github.com/angular/angular/blob/92084f2b6a7cc1c81e31b8f413424223e62806d8/packages/platform-browser/src/dom/dom_renderer.ts#L148

Как вы можете видеть, больше не проверяется, является ли значение присутствующим или нет. Таким образом, нулевое значение неявно преобразуется в строку.

Я создал проблему ( https://github.com/mseemann/angular2-mdl/issues/775) для восстановления старого поведения, при котором атрибут удаляется, если значение отсутствует.

Другие вопросы по тегам