angular 重复的视图

wbrvyc0a  于 5个月前  发布在  Angular
关注(0)|答案(4)|浏览(84)

🐞 bug report

受影响的软件包

我认为这个问题是由**@angular/core**软件包引起的。

是否为回归?

可能不是。我只在Angular >=7.0.0中尝试过。

描述

子组件的视图重复显示两次。如果你在根(app)组件中手动运行detectChanges(),并且其中一个子组件中的可观察对象不完整,那么它的视图将显示两次。似乎Angular无法(或删除)如果有进行中的可观察对象,则分离视图。这只发生在通过路由过程渲染的子组件中,如果父组件直接在其模板中包含它,则不会重现。

🔬 最小复现

https://stackblitz.com/edit/angular-8wr99p?file=src%2Fapp%2Fapp.component.ts

  1. app.ts
ngOnInit() {
  this.loaderService.getLoaderObservable().subscribe(show => {
    this.showLoader = show;
    this.changeDetectionRef.detectChanges();
  });
}
  1. info-child-1.ts
constructor(httpClient: HttpClient, loaderService: LoaderService) {
  loaderService.show();
  httpClient.get('https://raw.githubusercontent.com/ag-grid/ag-grid-docs/master/src/olympicWinners.json')
    .subscribe(response => {
      loaderService.hide();
    });
}
  1. 结果

🔥 异常或错误

🌍 你的环境中

Windows 10

Angular版本:

Angular CLI: 7.0.7
Node: 10.0.0
OS: win32 x64
Angular: 7.2.2
... common, compiler, core, forms, platform-browser
... platform-browser-dynamic, router

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.10.7
@angular-devkit/build-angular     0.10.7
@angular-devkit/build-optimizer   0.10.7
@angular-devkit/build-webpack     0.10.7
@angular-devkit/core              7.0.7
@angular-devkit/schematics        7.0.7
@angular/cli                      7.0.7
@angular/compiler-cli             7.0.4
@angular/language-service         7.0.4
@ngtools/webpack                  7.0.7
@schematics/angular               7.0.7
@schematics/update                0.10.7
rxjs                              6.3.0
typescript                        3.1.6
webpack                           4.19.1

还有其他相关信息吗?

iklwldmw

iklwldmw1#

如果你避免this.changeDetectionRef.detectChanges();,它就能正常工作。
https://stackblitz.com/edit/angular-nt4tzg

velaa5lx

velaa5lx2#

是的,我们已经这样做了。但我认为这仍然是一个bug。

sh7euo9m

sh7euo9m4#

我无法在v15上复现它。

相关问题