在未更改属性时重新呈现Angular2组件

时间:2017-06-30 07:33:58

标签: javascript angular zone

当我需要在没有模型更改的情况下重新渲染组件时,我有Angular2 +的情况。

我试试

ApplicationRef.tick() ,NgZone.run(callback),ChangeDetectorRef.detectChanges()--

不成功

如果模型没有改变,有没有办法重新渲染组件的标记?

1 个答案:

答案 0 :(得分:0)

免责声明:这只是一个解决方法/黑客的建议,因为您的用例是在Angular世界中难以匹配的用例(其中状态定义了所有内容并且状态触发事件发生了变化) )。

为什么没有反映窗口调整大小次数的模型?没有必要让它在网站上可见,因为即使在隐藏元素中也可以使组件重新绘制。

@Component({
   selector: 'zomg',
   template: `<span style="display:none;">{{resized}}</span>`
})
class Clss {
    resized: number = 0;

    constructor() {
      const _self = this;
      window.onresize = () => {
        _self.resized++;
      };
    }
}

或者使用HostListener

@Component({
   selector: 'zomg',
   template: `<span style="display:none;">{{resized}}</span>`
})
class Clss {
    resized: number = 0;

    @HostListener('window:resize')
    onWindowResize() {
        this.resized++;
    }
}