Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx Angular2路由器:更改路由不';不要第一次加载部件_Nginx_Angular_Systemjs_Angular2 Routing_Angular2 Directives - Fatal编程技术网

Nginx Angular2路由器:更改路由不';不要第一次加载部件

Nginx Angular2路由器:更改路由不';不要第一次加载部件,nginx,angular,systemjs,angular2-routing,angular2-directives,Nginx,Angular,Systemjs,Angular2 Routing,Angular2 Directives,我正在将angular2应用程序的路径从“/”更改为“/xyz”。对于“xyz”,我制作了一个名为XYZComponent的组件。这个XYZ组件为路由器生命周期实现了一个名为“CanActivate”的钩子。在这个钩子中,我正在为新路线更改页面标题 @CanActivate((next, prev) => { document.title = "mysite | xyz" return true; }) 然后我为这个组件实现OnInit并调用方法“ngOnInit()”

我正在将angular2应用程序的路径从“/”更改为“/xyz”。对于“xyz”,我制作了一个名为XYZComponent的组件。这个XYZ组件为路由器生命周期实现了一个名为“CanActivate”的钩子。在这个钩子中,我正在为新路线更改页面标题

@CanActivate((next, prev) => { 
   document.title = "mysite | xyz" 
   return true; 
})
然后我为这个组件实现OnInit并调用方法“ngOnInit()”。在这个方法中,我调用服务器来提供一些数据。该数据存储在名为xyzData的变量中,该变量绑定到模板。我的模板是:

<div class="xyzComp">
 <p>{{xyzData.msg}}</p>
</div>
通过单击我的应用程序标题中名为xyzBtn的按钮,调用_route.navigate([“XYZ”])来更改路由。所有路由的标头都是常量

问题是,当我第一次单击xyzBtn时,它只调用在XYZComponent的@CanActivate decorator中编写的内容。下次单击xyzBtn时,不会调用@CanActivate,但这次会调用ngOnInit()

请帮我做这个。只有在服务器上部署代码时,才会出现此问题。部署服务器是NGINX服务器。在nginx服务器上,我们已配置为忽略前端路由

然而,我的代码在开发服务器上运行良好,开发服务器是一个名为LiteServer的npm模块

更新-它在其他基于npm的服务器(如http服务器)上运行良好

更新2-Plunker:


更新3-我正在服务器中使用捆绑文件。通过systemjs builder构建捆绑包。这可能是个问题吗?

这个问题没有具体的答案。只是Angular2和SystemJs都处于测试阶段。不能使用angular2或其相关模块的缩小文件。此外,您不能将系统js模块与非系统js javascript文件组合

因此,如果您的项目中有say-nonsys.js、sys1.js和sys2.js文件。您不能将这三个组件捆绑在一起并从服务器提供服务。但您可以将sys1.js和sys2.js组合成sys-all.js,然后从服务器到浏览器提供两个不同的文件

对不起,伙计们,这不仅仅是Angular2的问题,而是系统js的问题。


问题通过移除系统polyfill解决了

能否请您提供一个Plunk?很难看到您正在使用这些信息片段做什么。(等待plunkr),顺便说一句
@CanActivate
在这里似乎不必要,您在未经任何检查的情况下返回
true
。您可以在
ngOnInit()
中设置标题。“配置为忽略前端路由”是什么意思?这实际上是一个服务器或服务器配置问题,而不是角度问题?您使用的是Angulars
*.min.js
脚本文件吗?我想它们还是坏了。试试
*.dev.js
ngOnInit(){
    console.log("xyz component init");
    this._myRestfulService.getXyz()
        .subscribe(data => {
            console.log("success",data);
            this.xyzData = data;
        }, err => {
            this.xyzData = {msg:"cannot get data"};
            console.log("error", err);
        });
}