徽章问题 - angular2-mdl 4.0.1(Angular 4)

时间:2017-04-09 15:19:12

标签: angular badge angular2-mdl angular-mdl

我使用的徽章如下:

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

当myCount:number为null时,Angular 2的mdl版本用于隐藏徽章。当前版本(带有Angular 4的4.0.1)显示带有&#39; null&#39;其中的文字。

但是 - a2MDL页面上的示例(动态实验)可以正常工作 - 从输入框中删除数字时,会隐藏徽章。我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

有趣!

版本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

正如您所看到的,不再检查它是否为“是否”。因此null值被隐式转换为字符串。

我创建了一个问题(https://github.com/mseemann/angular2-mdl/issues/775)来恢复旧的行为,如果该值不存在则删除该属性。