首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Angular 2中强制组件重新渲染?

如何在Angular 2中强制组件重新渲染?
EN

Stack Overflow用户
提问于 2016-01-31 02:22:45
回答 4查看 259.3K关注 0票数 204

如何在Angular 2中强制组件重新渲染?为了调试的目的,使用Redux时,我想强制一个组件重新渲染它的视图,这是可能的吗?

EN

Stack Overflow用户

发布于 2018-11-09 00:59:58

这里的其他答案提供了触发更改检测周期的解决方案,这些周期将更新组件的视图(这与完全重新呈现不同)。

完全重新渲染,这将销毁并重新初始化组件(调用所有生命周期挂钩并重建视图),可以通过以下方式使用ng-templateng-containerViewContainerRef来完成:

代码语言:javascript
运行
复制
<div>
  <ng-container #outlet >
  </ng-container>
</div>

<ng-template #content>
  <child></child>
</ng-template>

然后,在引用了#outlet#content的component中,我们可以清除outlets的内容并插入子组件的另一个实例:

代码语言:javascript
运行
复制
@ViewChild("outlet", {read: ViewContainerRef}) outletRef: ViewContainerRef;
@ViewChild("content", {read: TemplateRef}) contentRef: TemplateRef<any>;

private rerender() {
    this.outletRef.clear();
    this.outletRef.createEmbeddedView(this.contentRef);
}

此外,应该在AfterContentInit钩子上插入初始内容:

代码语言:javascript
运行
复制
ngAfterContentInit() {
    this.outletRef.createEmbeddedView(this.contentRef);
}

完整的工作解决方案可以在这里找到https://stackblitz.com/edit/angular-component-rerender

票数 13
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35105374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档