如何运行构造函数或 ngOnInit 两次或更多次

Posted

技术标签:

【中文标题】如何运行构造函数或 ngOnInit 两次或更多次【英文标题】:How to run the Constructor or ngOnInit twice or more 【发布时间】:2021-04-10 08:07:37 【问题描述】:

我的情况如下: 我有一个应用程序,其中有几个屏幕,其中一个屏幕上有一个文章列表,当单击一个项目时,它会将我带到另一个屏幕,其中显示该项目的详细信息,这是路线代码:

this.navCtrl.navigateForward('/main/item-detalle',  animated: true, queryParams: item );

在详细信息屏幕中,我有一个删除项目的按钮,当项目被删除时,用户将被重定向回项目列表屏幕:

this._route.navigate(['/main/home/items'],  replaceUrl: true, queryParams:  itemId: id  );

在此代码中,我通过参数向您发送已删除项目的 ID,以便能够将其从项目页面中删除。

但是我无法读取我通过 URL 中的参数发送的内容,因为构造函数和 ngOnInit 没有重新运行,因为项目页面没有被破坏。

我们的想法是不要使用“replaceUrl: true”来破坏项目页面。

应用程序使用带有角度的 Ionic。

【问题讨论】:

【参考方案1】:

试试这个解决方案来访问路由中的参数。

import  ActivatedRoute, Params, Router  from '@angular/router';

constructor(private activatedRoute: ActivatedRoute) 
this.activatedRoute.parent.params.subscribe(
      (params: Params) => 
        if(params['itemId']) 
         console.log(params['itemId']);
        
      
    );

或者,您可以使用service 在组件之间共享信息。

【讨论】:

这对我有用,使用:``` this. activateRoute.queryParams.subscribe ((res) => ``` 坦克!

以上是关于如何运行构造函数或 ngOnInit 两次或更多次的主要内容,如果未能解决你的问题,请参考以下文章

如何读取 BufferedReader 两次或多次?

在构造函数或 ngOnInit 中加载异步函数

6 张图带你搞懂 TCP 为什么是三次握手,而不是两次或四次?

正则表达式匹配任何字符 5 次或更多次

如何在 ngOnInit 上订阅两次?

NgOnInit() 在构造函数之后/并行运行