问题标签 [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 回答
713 浏览

angular - 在 ngOnInit 或构造函数中调用初始化方法

我对 Angular 4 很陌生,

你能告诉我在构造函数中调用像 initializeMyObj() 这样的方法与在 ts 文件中调用 ngOnInit 有什么不同吗?

谢谢

0 投票
3 回答
811 浏览

angular - 无法在我的 Angular 4.x 应用程序的 ngOnInit() 之外访问我的 json 响应数据

我有一个 Angular 4.x 应用程序,其中包含一个正在发送的 http 请求,并且我从端点取回了有效的 json(我可以在初始 console.log 中看到) - 问题是我无法在外部看到这些数据ngOnInit() 就在我有 console.log 的下面

谁能建议问题是什么?

0 投票
2 回答
97 浏览

javascript - 在 Angular 组件中放置 JavaScript 监听函数的最佳位置是什么?

TL;博士:

我在 Angular 5 应用程序中渲染一个BioDigital HumanAPIiFrame解剖模型。我使用以下方法实例化 API 对象:

有一个 API 函数human.on(...)可用于从内部注册点击事件iFrame(例如从模型中选取对象等)。我需要这个功能才能随时收听事件。我进行对象实例化并将此函数放入ngOnInit()其中并且它可以工作,但是当我更改源iFrame以呈现不同的模型时,此函数将停止工作。我应该把这个监听函数放在哪里,以便它的逻辑始终可用?

更长的版本:

我正在使用 BioDigital HumanAPI 开发一个 Angular 应用程序。这里的基本思想是 HumanAPI 提供了几个解剖模型,这些模型可以使用(此处iFrame的示例)在 Web 应用程序中呈现。这是一个链接,类似于:srciFrame

由于我希望我的 Angular 应用程序的用户能够查看几个这样的模型,我有一个这些 URL 的列表,并且根据用户的选择,我使用具有以下代码的函数更新srcof :iFrameupdateFrameSrc

最后(问题来了,请继续关注我),为了操作和注册不同的点击事件和用户与模型iFrame本身的交互,我们制作了一个这样的 HumanAPI 对象:

这让我们可以使用 API 事件侦听器函数human.on('scene.picked'),例如注册和保存点击事件(如我上面引用的示例所示)。所有这些工作正常。

问题是由于我human在函数中初始化了对象并将ngOnInit()函数放在那里,所以在更改源human.on('scene.picked')后我无法注册点击事件。iFrame据我了解,ngOnInit()仅在组件首次初始化时调用一次,所以更新源后可能无法使用监听逻辑?我尝试将逻辑放在不同的生命周期挂钩中,但它不起作用。human.oniFrame

My current work-around is to re-call the ngOnInit() function after updating the iFrame source, and it works that way, but I believe this is against the standard life-cycle management practices.

My questions are:

  • It is acceptable to re-call the ngOnInit() function from within the component logic?
  • If not, where should I place a JavaScript API function that listens to click events from an iFrame at all times, even after the source of that iFrame has been changed?
0 投票
1 回答
677 浏览

angular - 角值进入子组件模板但在 ngOnInit 中未定义

当我将值传递给模板中的子组件值但未显示在子组件的 ngOnInit 中时

父组件

子组件

子组件ts文件

0 投票
2 回答
632 浏览

json - Angular 5 - ngFor无法使用ngOnIt打印rest json数据

我正在尝试在我的 HTML 选择选项中打印简单的剩余消耗的 json 数据。我已经做过很多次了,但我不知道我在这里做错了什么。我想使用 ngOnIt 因为我必须在我的 HTML 上的任何内容之前加载我的国家和州

HTML -

我的组件 -

json api 使用的数据,完美地显示在 XHR 以及控制台结果中-

0 投票
0 回答
840 浏览

angular - Angular 2根据onChange值更改URL和内容

所以,我有一个组件可以实现OnInit基于 API 调用刷新数据。组件是RoomComponent。在那个组件中,我传递events的是一个对象数组。然后在room.component.html我渲染下拉列表中包含event.url. 我想在下拉值更改时更改 URL 和内容。

但是这个时候,我只能更改URL,不能更改内容(我仍然不知道如何实现OnInitOnChange一起)。这是一些代码,如果room.component.ts

这是一些room.component.html显示下拉值的代码:

0 投票
1 回答
4051 浏览

angular - Angular5服务调用在ngOnInit上不起作用

当我导航到结果组件时,ngOnInit 中的服务按预期工作。然后我打开侧面菜单,导航到另一个页面,然后再次导航到结果页面。但是这次页面没有渲染结果。而是渲染了 ng-template。控制台上没有错误,什么都没有。ngOnInit 正在工作,正在显示 console.log('init'); 但是服务电话没有。如果我将服务调用粘贴到构造函数或函数中,它也不起作用。我尝试使用和不使用 ngZone,什么都没有。

我需要提一下,如果我直接在结果页面上按 F5 就可以了。就在我通过this.router.navigate(['/resultados']); Than 导航到它时,它不起作用。

这是结果组件:

这是结果 HTML:

这是 firestore.service:

0 投票
1 回答
9024 浏览

angular - angular5 - 在父 ngOnInit 完成之前调用的子组件

首先,在 ngOnInit() 中制作表格设置数据并设置为 settingA 变量。

此设置变量绑定到 html 中的设置。

我想使用settingA在子组件中制作表格。

但是子组件 ngOnInit 在父组件的 ngOnInit 完成之前被调用。

所以在子组件中设置变量是未定义的。

我需要你的建议。

这是父组件 [grid-serialize.component.ts]

settingA 绑定到子组件中的设置变量

这是父 component.html [grid-serialize.component.html]

这是子组件 [table.component.ts]

这是子组件 html [table.component.html]

0 投票
2 回答
592 浏览

angular - 检测从命名路由器出口中的组件返回的导航

我在路由器插座中显示了一个A 组件,在其中我有另一个B 组件,它有一个命名的路由器插座,我在其中显示另一个C 组件

在这个C 组件中,我执行验证,在此之后,我想回到A 组件重新加载它(执行 ngOnInit 或任何方法)。

我已经尝试过使用不同的方法,例如导航、navigateByUrl 和 Location.back()。问题是A 组件永远不会被销毁,因此它永远不会执行 ngOnInit 方法。

有人知道我该如何解决这个问题?谢谢!

0 投票
1 回答
1295 浏览

angular - 打字稿 - 空数组引用

我正在用 typescript/angular 编写应用程序,我有一个服务,它可以获取带有数据的 json,我想显示这个下载对象,但可能会发生对象可能比我在一个 html 组件中显示的要多,所以我应该拆分此对象数组。顺便说一句,在此之前我应该​​通过 ip 地址过滤来自 json 的所有对象,所以我编写这样的组件:

但是我不能使用过滤功能,因为 pods 数组是空的,但是为什么呢?