问题标签 [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.
angular - 离子 4:ngOnInit 与 ionViewWillEnter
在使用 Ionic 4 创建混合应用程序时,哪个更好地使用 Angular Lifecycle Hook 或 Ionic Lifecycle Hook 专门用于初始化?
Angular 生命周期钩子 - ngOnInit
离子生命周期挂钩 - ionViewWillEnter
angular - 如何识别 *ngFor 循环已完成标记更改?
我有一系列公司从服务中获取并在*ngFor
指令的帮助下绑定该数组数据。
现在,我想显示一个覆盖“等待......”的整个页面,直到数据绑定到标记为止。
直到那时,我尝试了这个
我知道endWaitingModal()
在服务调用完成后立即调用而不是在绑定完成后调用,这是有道理的。之后我发现了这个解决方案角度生命周期钩子,它工作正常。
只要组件标记发生更改,就会触发此挂钩。它对我有帮助,但据我所知,这个解决方案还达不到标准,因为它像父监听器一样工作(连续监听),并且会寻找标记中的任何变化并被触发,这不是正确的方法. 我认为它应该像特定元素一样工作。请指导我。
angular - Angular 7 - ngOnInit 没有被调用
我们确实有一个主要的角度应用程序,它引用了代表主应用程序子区域的库。
我们希望能够在我们的库中定义分离的路线。
例如:
- app 有根路径:/app
- 库有子路径:/library
在路由 /app/library 之后,它应该重定向到存储在库中的组件。
我们通过使用延迟加载实现了这一点。它仅在您使用主应用程序中 Route 的“loadChildren”属性连接路由时才有效。
我们还被迫应用 Angular 团队建议的解决方法从位于 node_modules 的库包中延迟加载模块无法构建- 这是使用代理/包装器模块来延迟加载角度工作区或节点模块中的库。
不管怎样,我们都搞定了。
现在问题开始了:
Angular 生命周期事件(例如:ngOnInit)在我们库中的组件中不起作用。当我们使用预加载引用库时(同时丢失了我们路由想要的),角度钩子开始工作得很好。这里可能有什么问题?
是 Angular 的问题吗?我们希望我们的应用程序结构良好,这就是我们将一些区域分成独立库的原因。但是,我们即将放弃并将所有代码移动到主应用程序中。
编辑:
app.module 中的路由(forRoot,延迟加载):
路由(LazyWrapperModule,在主应用程序内)(forChild):
库中的路由(forChild):
angular - 输入更改时指令不会触发
我正在实现一个指令,它将一种语言(或一组语言)作为输入,并将一个类添加到添加指令的 DOM 元素中。
下面是我使用该指令的地方。"languagesInView" 是一个字符串列表,在使用该指令的组件中使用 @Input() ...
我希望当传递给组件的languagesInView 输入发生变化时,我在模板中传递给[appRtlView] 的值会发生变化。(我可以通过使用插值{{languagesInView }}将值打印到屏幕来看到值实际上发生了变化)
在 RTLView 指令中,如果我使用 ngOnInit,则不会拾取对“inputLanguage”字段的更改。
为了克服这个问题,我在指令中使用了 ngOnChanges(实现 OnChanges 可以满足我的要求):
我无法将 changeDetectionStrategy 添加到指令初始化中,这让我认为指令通常不应该实现 OnChanges。我的在线搜索并没有太大帮助。
在 Angular 指令中运行 ngOnChanges 是错误的吗?
谢谢
angular - 在 ngFor 中创建组件时,Angular ngOnInit 从未执行
我遇到了一个谜。我在这个例子中的 ngFor 循环中:
仅对于那些 N 个创建的“vi-rule-contract”组件中的一个(一个非常具体的组件),ngOnInit 不会仅被称为具有(描述符、rc、项目)的新值的 ngOnChanges。对于所有其他“vi-rule-contract”,ngOnInit 将被调用,但不会被调用 ngOnChanges。所以这是我的问题:
是否存在组件上的 ngOnInit 永远不会仅被称为 ngOnChanges 的情况?
PS角6.1.10
angular - 根据 Angular 中的场景执行 Typescript 函数
在我的应用程序中,我在一个组件中有两个组合框。它们的默认值都是null
.
选择时间段或用户时,会将值发送到商店。这允许您在不同的组件中使用期间和选定的用户。
Combobox.component 存储:
店铺:
存储到 Result.component:
要显示第二个组件的列表,我必须选择一个时期和一个用户。在那之前,一切都完美无缺。
但是我想做的是在选择用户和期间时执行一个功能。当更改两个组合框之一的值时,也会执行此函数。
此功能将允许我根据期间和用户从我的数据库中检索钱包列表。
我不知道怎么做。如果你有想法,我很感兴趣。
这是一个小例子:Stackblitz HERE
先感谢您。
typescript - 如何在 ngAfterViewInit 之前处理 uriParam?
我尝试将信息从一个网站传递到另一个网站。这两个网站不共享相同的 url 或服务器。
我认为最好的方法是使用 URL 参数(http://some.url?param=value)。因此,如果我在 Angular 生命周期中没有记错的话,在 ngAfterViewInit 回调之前。通过这样做,self.route.snapshot.queryParamMap.get('param') 返回 null。
我怎样才能得到这个参数?是否有另一种(更清洁)的方式在 2 个有角度的网站之间传递信息?
最初我的代码在 ngOnInit 方法中。我将此代码移至 ngAfterContentInit 但没有任何更改,路由器仍然为空。
我考虑过解析window.location.href,但对我来说似乎并不干净。
app.module.ts
app.component.ts
app.component.ts
app.component.html
导航组件.ts
为示例简化了以下文件
导航组件.ts
导航组件.html
如上所述,目前我无法从 URL 中获取我的参数。Router 对象为空。
angular - 尝试设置最后一个活动的 MatTab 时出现 ExpressionChangedAfterItHasBeenCheckedError?
我有一个 Auth 组件。该组件使用mat-tab-group
具有两个mat-tab
组件的组件,可让您轻松地在登录和注册之间返回和第四个组件。登录位于索引 0(第一个显示的表单)处,注册位于索引 1(第二个显示的表单)。当用户尝试使用已经存在的用户名注册时,后端的验证失败,我想将用户带回“注册”而不是默认的第一个用户名,即“登录”。更改选项卡时,我将上次查看的选项卡存储在 localStorage 中。
我有一个onTabChange
事件处理程序
我把这段代码放在哪里并不重要:
我总是收到 ExpressionChangedAfterItHasBeenCheckedError。但这真的让我感到困惑,因为我的代码在构造函数中?
我已经尝试在生命周期钩子中添加ChangeDetectorRef
并添加该detectChanges();
行ngAfterContentInit
,但同样的错误不断出现。
ionic-framework - 如何使用 tabs.router.module 中的路由在 Ionic 4 中触发 ionViewWillLeave
将所有页面路由放入 TabsPageRoutingModule 时不会触发ionViewWillLeave
生命周期挂钩。ionViewDidLeave
我们将路线从 更改app-routing.module.ts
为tabs.router.module.ts
以获得 Ionic 4 应用程序中标签栏的完整视图。这些路线完美无缺。
当路由在时app-routing.module.ts
,ionViewWillLeave
总是在离开页面(并关闭当前Observables
)时触发。现在ionViewWillLeave
离开页面时不会触发。
tabs.router.module.ts 中的路由
TS 文件中的 ionViewWillLeave 记录失败
无法弄清楚为什么ionViewWillLeave
不再打印。任何帮助表示赞赏。
app-routing.module.ts 中的路由
在 TS 文件中记录 ionViewWillLeave 的成功