【发布时间】:2021-09-11 00:19:56
【问题描述】:
在我的 Angular 11 项目中,我有一个 Observable,它改变了视图并在渲染时需要一些时间。
类似这样的:
export class MyComponent implements OnInit {
myObservable = of([1, 2, 3]);
constructor() { }
ngOnInit(): void {
this.myObservable.pipe(
// here is some functions
).subscribe();
}
}
在ngOnInit 运行后,observable 仍在运行和处理数据。数据到达后,管道更改模板。但这种变化发生在ngAfterViewInit 完成之后。所以我需要一个在管道之后运行的灵魂,并且渲染完成了正在发生的事情,因为管道完成了。
如何在我的 observable 和导致的渲染完成后运行代码(工具提示初始化)?
ngAfterViewChecked 不是一个好的解决方案,因为它总是在视图更改时运行,而且我的工具提示初始化也会更改视图。所以我只想运行一次这个初始化。
有什么解决办法吗?
【问题讨论】:
-
您在每次可观察到的更改后初始化您的工具提示?
-
在您依赖数据进行预加载的那一刻,您的整个代码将变为异步,因此请使用订阅处理异步数据。如果你想同步它,你可能想Resolve它
-
你看过rxjs的startWith操作符吗?
-
@misha130 是的,因为当它发生变化时,视图也会发生变化,消除以前的工具提示装饰元素,我需要使用新的工具提示参数渲染新元素。
-
@AlekseySolovey 我使用异步数据并使用订阅,但在重新渲染视图后仍然无法运行工具提示初始化。
标签: angular angular-lifecycle-hooks