【发布时间】:2021-09-02 06:14:36
【问题描述】:
我的 Angular 11 更改检测仅在我向下滚动以进行初始页面加载时触发。如果我在订阅中调试,我的 observable 会正确发出。有什么想法吗?
我的组件:
public extras$: Observable<Order[]>;
constructor(private userService: userService) {
}
async ngOnInit() {
await this.load();
}
private async load() {
this.userService.user$.subscribe(async user=> {
if (user) {
this.extras$ = of(await this.userService.getExtras(22456));
}
});
}
我的 html 组件:
<div class="u-extras">
<div class="main-heading"><span>User Extras</span></div>
<ng-container *ngIf="extras$ | async as extras;else loader">
<user-extra*ngFor="let extraof extras" [extra]=extra></user-extra>
</ng-container>
</div>
<ng-template #loader>
<loader-dots></loader-dots>
</ng-template>
【问题讨论】:
-
标题完全是误会。
Change Detection在输入/输出发生变化时由角度自动触发。您可以通过在组件的decorator中更改它来决定哪些组件自动更新,哪些不更新。另外,为什么异步ngOnInit不是一个好习惯的原因:stackoverflow.com/questions/56092083/… -
您能否添加向我们展示您获得
user$的组件的decorator?