问题标签 [ngoninit]

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 回答
1058 浏览

angular - ngOnInit 不在错误页面组件上运行

Angular 4 应用程序。

我正在尝试制作一个错误页面,以显示有关可能发生的未处理异常的一些信息。拦截最终错误并将用户重定向到由GlobalErrorHandler单个ErrorComponent. 发生错误时会显示页面,但不会调用生命周期挂钩。

错误处理程序

错误组件

plunkr上的工作演示。

我该如何解决这个问题?也许有人知道解决方法?谢谢

0 投票
1 回答
464 浏览

angular - AngularJS NgOnInIt 方法在第二次使用路由器链接访问我的组件时丢失数据

我有一个名为 edit-scrim 的组件,在我的组件内部,我有 2 个模型“团队”类型的数组,我正在使用导入到组件中的服务中的一些方法来为数组分配值。在我第一次访问该页面时,数组被填充得很好,但是如果我使用 router.navigate() 转到另一个页面并使用 routerlink 返回到“edit-scrim”,它会丢失其中一个数组的数据。我将数据分配给数组的所有功能都在 ngOnInit 内部,我在这个方法中做了一个 console.log("check") 来查看它是否在我每次访问组件时都被调用并且被调用所以我没有确定出了什么问题。

如果我刷新我的页面,数据会返回,但如果我再次通过路由器链接访问它,它不会

这些是我在 component.ts 文件中的数组

附件是我的 ngOnInIt 方法的代码片段,我使用 routerlink 访问另一个页面并返回到“edit-scrim”并且数据消失了。

两次访问页面后的 console.log 信息

编辑 当我在我的 init 函数中执行此操作时,我第一次访问我的页面时,控制台会记录正确的数据,如果我转到另一个页面并返回此页面,它就会丢失。:/

编辑2

EDIT3 - >没有这样工作:/也许我搞砸了语法?

编辑 4 - 没有用,它甚至没有进入执行 console.log 的阶段

0 投票
2 回答
299 浏览

angular - 在组件生命周期中间调用 ngOnInit

我在应用程序生命周期的中间(不仅仅是在我创建它时)初始化text.component(选择器)时遇到了一些问题。app-text

这是 app.component.html:

我正在从app-textwithtextInfoEmitter函数发出数据并在app.component.tswith中更新模型dataFromChild(e)

我注意到每次textInfoEmitter发出,app-text都会重新初始化。我可以确认,因为ngOnInitconstructor函数被调用。

这是 app.component.ts 文件:

text.component.ts很复杂,我还没有找到一种在线复制复杂 Angular 项目的方法。这是我调用的发射辅助函数:

delta并且dragtext.component.ts.

我的问题是,在什么情况下组件会在生命周期内重新初始化?如何防止这种情况?

问题的副本。我本质上也是这样做的,使用 ngFor 指令并使用 EventEmitter 更新模型。这一次,模型更新时不会触发 ngOnInit。

app.component.ts

text.component.ts

0 投票
1 回答
3272 浏览

angular - Angular ngOnInit - 需要刷新

我有一个网络应用程序。在我的右侧栏中,我有 3 个帖子。当我点击一个帖子时,我有一个导航:

有一个帖子配置文件组件将接管。这个组件有一个函数,它从一个服务中调用一个函数,该服务获取我具有指定 id 的帖子。现在,我将在我的内容区域(屏幕左侧)中看到该帖子的所有详细信息。此函数(获取我的帖子)仅在 Post Profile 组件的 ngOnInit 中调用。

如果我从右侧栏中单击另一个帖子,我可以看到 url 的变化,但不会调用获取我的帖子的函数,并且我的内容区域的帖子详细信息也不会改变。如果我现在刷新页面,我可以看到我想要的帖子,一切正常。

如果有帮助,我的功能上有 .subscribe。

我看不出问题。

这是我的 PostProfileComponent

0 投票
1 回答
2470 浏览

angular - How to reload a view after router.navigate in Angular 4?

I have a switch to shop function which is controlled by a header component and displays a dashboard for that venue.

In that header component, I navigate to dashboard route, even if I already in that route.

But it doesn't trigger ngOnInit hook again so my view is not reloaded.

What is the correct workaround for such case?

0 投票
2 回答
349 浏览

angular - Angular 2仪表板应用程序Web api在初始化时调用

我有一个用 Angular 2 编写的仪表板应用程序。我正在使用 api 调用数据。检索数据后,我将它们呈现在图表中。如下面的演示链接。当我从仪表板组件的 ngOnInit() 方法进行 api 调用时,我得到空响应,但是如果我使用按钮单击事件做同样的事情,所有数据都会按预期加载。在第一次加载时进行 api 调用并在 UI 中填充所有数据的最佳位置/启动是什么?

http://preview.themeforest.net/item/avenxo-responsive-angularjs-html-admin/full_screen_preview/11660185?ref=cirvitis&clickthrough_id=1107952073&redirect_back=true

0 投票
0 回答
57 浏览

angular - ngFor 在 ngOnInit Http 请求完成之前触发

我有一个包含对象列表的父组件,子组件是从该列表中选择的任何对象的详细视图。我将对象 uuid 放入 url 参数中,然后在加载孩子时使用该 uuid 执行 Http Get 请求。但是,我正在使用 ngFor 循环遍历对象中的一些图像,看起来 ngFor 试图在 Http 请求完成之前循环遍历媒体数组。

我的错误:

TypeError:无法读取未定义的属性“媒体”

The images load fine but the error seems to be causing issues when a new parent object is selected. 旧图像与新图像一起保留在子组件上。一旦来自 NgOnInit 的 GET 请求完成,我找不到让 ngFor 开始循环的解决方案。

任何帮助将不胜感激。

Child.ts 看起来像:

儿童.html:

0 投票
3 回答
2478 浏览

angular - Angular 2,在 ngOnInit 中订阅后无法获取数据

我有一个问题,也许我不明白该怎么做,但是当我尝试在角度 ngOnInit 期间从 HttpRequest 捕获数据时,我的 console.log 会返回一个“未定义”值。问题是,当我在模板视图中使用此值时,它会起作用!

这是我的组件

变量 this.referentiel 给我返回了一个未定义的值,因此我无法将我的表单绑定到现有值...

有什么建议么 ?

0 投票
1 回答
1656 浏览

angular - 角。仅绑定一次事件(在第一次初始化时)

假设我想在用户每次点击<a>标签时提醒他。

如果我把这个绑定放在constructor(on in ngOnInit())中,每次我访问这个组件(路由器链接)时,我都会有新的绑定(和一个警报)。
在第一次初始化时只绑定一次的方法是什么?

同时我使用removeEventListener()in ngOnDestroy()。好像很丑。有更好的吗?

0 投票
2 回答
693 浏览

angular - 所有页面通用的 Angular ngOnInit

有没有办法设置通用 ngOnInit() 在 Angular 应用程序的每个页面上执行?而不是写在每一页:

我想简单地写一次这段代码,当路由器打开每个页面时, this.app.doCommonStuffForEachPage() 会被调用。