有什么方法可以迫使角组件重新加载?我的意思是,我希望我的实际组件中的所有组件都消失,并使用其构造函数ngOnInit()
和所有组件从零重新加载。
我想这样做是因为我有一个应用程序使用诺言获取大量数据。提取的数据取决于应用程序中用户控制的某些参数。
这些参数更改时,应用会再次获取数据。问题是:如果在更改参数时最后的承诺尚未结束,则将开始获取新数据,但是旧的承诺仍在等待完成。另外,完成操作后,它们会显示错误的信息几秒钟。另外,如果新的承诺比旧的承诺早完成,则该应用会显示正确的信息几秒钟,直到旧的承诺结束,然后显示错误的信息,直到再次更改参数为止。
答案 0 :(得分:2)
重新加载组件不是解决该问题的适当方法。只需学习如何使用可观察变量,它具有处理此类问题的所有内容(或破解某些承诺,但是您最好使用可观察变量,因为它们是专门为简化此类操作而设计的)。例如:
userInput.valueChanges.pipe(
switchMap(input => this.someService.getData(input))
).subscribe(data => this.displayData(data));
说明:每次用户输入更改时,您都会调用该服务以获取数据,然后将其显示。如果用户输入发生更改,但您仍然没有数据,则自动取消对先前可观察数据的订阅,并创建对新可观察数据的新订阅。
答案 1 :(得分:0)
您可以通过路由来做到这一点。在componenet的ngOnInit()内部,您可以重定向到要重新加载的组件。