Angular2路由器和OnInit

时间:2016-03-31 16:14:29

标签: angular router

我最近开始使用Angular2路由器遇到困难。问题是router-outlet之外的组件会调用ngOnInit方法。但是router-outlet内部的组件不会。

我有previous issues with the Angular2 router as well。但是这个问题似乎与外部Javascript代码有关,而这个问题似乎显然是Angular2生命周期钩子的问题。

我把一些Plunker放在一起,但无法重现这些问题。这就是问题所在。事实证明,我弄清楚了问题是什么(在我读过的其他一些事情中暗示了这一点)。因此,我将此问题作为一个问题发布,如果其他人遇到此问题,我会将其作为答案包含在内。

1 个答案:

答案 0 :(得分:0)

正如我之前提到的,我会看到Angular2路由器的其他问题。现在我已经挖掘了更多,我认为它们是相关的。

我在这里贬低趋势并且不使用SystemJS。相反,我只是做一个简单的webpack构建。这似乎是问题所在。我看到了一些其他问题和stackoverflow问题,他们提到了script标签顺序的重要性。好吧,因为webpack直接控制了这些事情,所以我并没有真正关注。但事实证明它很重要。

我目前正在从bundle.js生成webpack个文件。但我不理解的是,您还必须找到一种方法将angular2-polyfills.js包含在您的应用程序中。我有点认为它会以某种方式被webpack以某种方式包括在内,但事实并非如此。

我尝试的第一件事就是将其添加到index.html的<head>部分。这将它加载到webpack之外,这似乎就足够了。我还发现我可以通过添加:

来包含
require('angular2/bundles/angular2-polyfills');

...在我的webpack入口点。

一旦angular2-polyfills.js文件到位,生命周期挂钩就会被正确调用。