Выдача значка - 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
Как вы можете видеть, больше не проверяется, является ли значение присутствующим или нет. Таким образом, нулевое значение неявно преобразуется в строку.
Я создал проблему ( https://github.com/mseemann/angular2-mdl/issues/775) для восстановления старого поведения, при котором атрибут удаляется, если значение отсутствует.