问题标签 [angular-lifecycle-hooks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
992 浏览

angular - Angular - 共享服务订阅的行为

使用 Angular,我有一项服务可以共享来自不同组件的一些变量。像这样:

然后我从一个组件订阅它。像这样: 组件 1

从另一个组件中,我像这样更改变量: 组件 2

我有一个带有一些按钮的 sidenav 栏,每个按钮都会更改 url 和加载有 ng 内容的组件。

当我按下按钮在组件 1 上重定向时,我订阅了变量并完成了获取请求。一切都很好。

问题是当我按下按钮在组件 2 上重定向时,共享变量会发生变化,因为我在组件 1 上订阅它会再次执行获取请求。确实,get 请求在 subscribe 的回调中。

但奇怪的是组件 1 不再加载,因为它是组件 2。当组件更改时它不应该被销毁?

0 投票
1 回答
2694 浏览

angular - 在 Angular 5 中的 ngoninit 之后如何运行函数

这是关于生命周期钩子的。我的要求是在页面初始化后运行一个函数是后台。我用过 ngAfterViewInit()。但它不等待从 ngoninit() 中找到的数组。

  • 如果我使用 ngDocheck() 代码进入无限循环。ngViewinit 不适合这种情况。帮帮我
0 投票
1 回答
4365 浏览

angular - Angular - 在 APP_INITIALIZE 上加载的 HTTP 拦截器和配置

我有一个带有工厂的配置模块,它在应用程序初始化时执行(APP_INITIALIZER)

如果我在页面/组件上打印数据,一切正常。

问题是当我尝试在从 HttpInterceptor 调用的服务中使用配置时:

拦截器:

身份验证服务:

问题是 configService 是未定义的。

有没有办法将拦截器初始化推迟到 APP_INITIALIZER 完成?

我的目标是为所有环境提供独特的构建。


在尝试了不同的选择之后:

对于这个问题,我找不到一个好的、可维护的和简洁的解决方案。

0 投票
1 回答
978 浏览

angular6 - Angular 6订阅构造函数上的事件多次调用

在我的构造函数组件(子组件)中,我添加了简单事件

这是我的代码:

第一次打开此页面时,此事件仅调用一次,但再次进入页面时,此事件调用了两次,进入 3 次时,此事件调用了 3 次,依此类推。

[顺便说一句,如果我将代码移动到 ngOnInit 事件上也会发生这种情况,并且这种情况也会发生在另一个事件 ngrx 存储管道上,该事件多次调用]

这是我的路线(也许是原因)

在此处输入图像描述

0 投票
1 回答
2315 浏览

angular - Angular 7:从订阅内部调用 ChangeDetectorRef detectChanges() 会导致无限循环

在阅读了与变更检测和类似帖子相关的所有材料并且未能解决我的问题后,我在这里发布。

detectChanges()从订阅内部调用ChangeDetectorRef会导致无限循环。如果我不打电话detectChanges,我会得到ExpressionChangedAfterCheck错误。我真的不知道如何解决,为什么会出现ExpressionChangedAfterCheck错误

注意:此问题仅在值与 绑定时存在ngIf

0 投票
1 回答
625 浏览

angular - 如何在 Angular-6 中重新实例化/销毁组件

  1. 你能从组件本身检查组件实例的存在吗?

  2. 您可以销毁现有实例并创建一个新实例吗?

我的一个组件似乎有问题。当使用不同的参数连续多次访问时,组件的 ngAfterViewInit 仅在第一次触发(我假设组件被实例化时)。随后的访问不会导致触发 ngAfterViewInit,即看起来好像它正在重用相同的组件实例或其他东西......但是,我可以识别参数并使用更改的参数做必要的事情......

但是,如果我访问一条新路线并返回到有问题的路线/组件,它会正常工作。我可以看到它在新路由和相应组件启动之前被破坏了。

我的目标是每次访问该路线时都重新启用该组件。

所以

  1. 你能从组件本身检查组件实例的存在吗?

  2. 您可以从代码中销毁现有实例并创建一个新实例吗?

或者有没有其他方法可以解决这个问题。

我的设置

延迟加载模块 -> mdm

菜单锚链接

  1. mdm/1000
  2. mdm/2000 等
0 投票
2 回答
7146 浏览

hook - Ionic 4/Angular 7 生命周期钩子每页只调用一次

在 ionic 3 中有生命周期事件,例如ionViewWillEnterionViewWillLeave。但是在 Ionic 4 中,这个事件必须被 Angular 生命周期事件替换,比如ngOnInitngOnDestroy

在我的应用程序中,当用户进入或离开页面时,我需要实现一些给定的操作。例如,如果用户推送另一个页面(在 Ionic 4 中向前导航),应用程序应在推送新页面之前为当前页面执行 ionViewWillLeave。如果用户从推送的页面返回(在 Ionic 4 中向后导航),应用程序将为上一页执行 ionViewWillEnter。

我试图用 ngOnInit 和 ngOnDestroy 替换这个事件。但是这个事件每页只调用一次。例如,如果我路由到另一个页面(在 Ionic 4 中导航 root)并返回到第一页,则不会再次调用 ngOnInit 和 ngOnDestroy 事件的第一页。

每次用户进入或离开页面时如何调用事件?

0 投票
1 回答
1642 浏览

javascript - 从公共位置调用 Angular 组件的 ngAfterViewInit

我正在使用引导工具提示。我想从某个共同的地方为每个组件触发 ngAfterViewInit。

常见的地方(如 app.module.ts)

Component_1:组件中没有ngAfterViewInit,仍然是从某个常见的地方触发生命周期。

Component_2:这个组件有ngAfterViewInit,

在这种情况下,ngAfterViewInit 是从两个地方触发的(公共位置以及它各自的组件)

有什么办法可以做到这一点?

谢谢

0 投票
2 回答
140 浏览

angular - Angular 2 - 检测绑定属性何时收到值

我想知道保税财产何时收到一个值,即使它是相同的值。

例如

那是一个特征组件

应用程序的组件

最后,应用程序的模板

bondedProperty ngOnChanges问题是,如果没有调用相同的值,并且该ngDoCheck方法不能解决我的问题,因为我不知道“更改”是否在bondedProperty.

0 投票
0 回答
19 浏览

angular - "ExpressionChangedAfterItHasBeenCheckedError"; 我不明白生命周期钩子中有什么类型的操作,让它被抛出

由于某些原因,了解 Angular 的工作原理对我来说很重要;出色地; 我无法理解的一件事是标题中提到的错误,以及 Angular 禁止我在生命周期钩子中做的事情(如果有的话)。请在此处回答,请勿转发链接;我想我已经检查了所有这些。