当前位置: 首页 > 知识库问答 >
问题:

Angular 2.0路由器无法重新加载浏览器

张可人
2023-03-14

我使用的是角度2.0.0-阿尔法.30版本。当重定向到其他路由时,刷新浏览器,其显示无法获取/路由。

你能帮我弄清楚为什么会发生这个错误吗?

共有3个答案

孔波
2023-03-14

Angular默认使用HTML5 pushstate(PathLocationStrategy在Angular俚语中)。
您要么需要一个处理所有请求的服务器,就像它在请求index.html一样,要么切换到HashLocationStrategy(路由的URL中带有#)https://angular.io/docs/ts/latest/api/common/index/HashLocationStrategy-class.html

另见https://ng milk . rocks/2015/03/09/angular js-html 5-mode-or-pretty-URLs-on-Apache-using-htaccess/

要切换到HashLocationStrategy,请使用

的更新

import {HashLocationStrategy, LocationStrategy} from '@angular/common';

@NgModule({
  declarations: [AppCmp], 
  bootstrap: [AppCmp],
  imports: [BrowserModule, routes],
  providers: [{provide: LocationStrategy, useClass: HashLocationStrategy}]
]);

或更短的使用哈希

imports: [RouterModule.forRoot(ROUTER_CONFIG, {useHash: true}), ...

确保您拥有所有必需的导入

对于新的(RC.3)路由器

<base href="."> 

也会导致404。

它要求取而代之的是

<base href="/">

的更新

bootstrap(AppCmp, [
  ROUTER_PROVIDERS,
  provide(LocationStrategy, {useClass: HashLocationStrategy})
  // or since RC.2
  {provide: LocationStrategy, useClass: HashLocationStrategy} 
]);

import {provide} from '@angular/core';
import {  
  PlatformLocation,  
  Location,  
  LocationStrategy,  
  HashLocationStrategy,  
  PathLocationStrategy,  
  APP_BASE_HREF}  
from '@angular/common';  

的更新

import {BrowserPlatformLocation} from '@angular/platform-browser';

import {provide} from 'angular2/core';
import {
  // PlatformLocation,
  // Location,
  LocationStrategy,
  HashLocationStrategy,
  // PathLocationStrategy,
  APP_BASE_HREF}
from 'angular2/router';
import {BrowserPlatformLocation} from 'angular2/src/router/location/browser_platform_location';
import {provide} from 'angular2/core';
import {
  HashLocationStrategy
  LocationStrategy,
  ROUTER_PROVIDERS,
} from 'angular2/router';

另见https://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta16-2016-04-26中断-变化

子车峰
2023-03-14

免责声明:此修复适用于Alpha44

我遇到了同样的问题,并通过实施Angular中列出的HashLocationStrategy解决了这个问题。io API预览。

https://angular.io/docs/ts/latest/api/common/index/HashLocationStrategy-class.html

首先导入必要的指令

import {provide} from 'angular2/angular2';
import {
  ROUTER_PROVIDERS,
  LocationStrategy,
  HashLocationStrategy
} from 'angular2/router';

最后,像这样引导它

bootstrap(AppCmp, [
  ROUTER_PROVIDERS,
  provide(LocationStrategy, {useClass: HashLocationStrategy})
]);

您的路由将显示为http://localhost/#/route,当您刷新时,它将在适当的位置重新加载。

希望这有帮助!

谯翔
2023-03-14

您看到的错误是因为您正在请求http://localhost/route这是不存在的。据西蒙介绍。

使用 html5 路由时,需要将应用(当前为 404)中的所有路由映射到服务器端的索引.html。以下是为您提供的一些选项:

> < li>

使用实时服务器:https://www.npmjs.com/package/live-server

$live-server --entry-file=index.html`

使用nginx:http://nginx.org/en/docs/beginners_guide.html

error_page 404 /index.html

Tomcat-web.xml的配置。来自Kunin的评论

<error-page>
      <error-code>404</error-code>
      <location>/index.html</location>
</error-page>
 类似资料:
  • 我有一个问题,看起来很简单,但现在不那么简单了(对我来说): 我已使用Vue cli(路由器、VueX、PWA)设置了一个Vue项目。我一如既往地设置了一些路由(按照文档中的建议)和VueX中的一些状态字段: 在我的视图/组件中,我在实例上使用方法,以编程方式死记硬背,如下所示: ,其中是等待的

  • 我有几个路线,每个路线装载3个组件。所有管线上的两个组件都相同。当我在这些路由之间移动时,我希望传递新数据,在组件的某个初始化事件上,我希望填充该组件的数据,以便它反映在UI上。我还想重新触发正在加载的组件的引导动画。我该怎么做呢。因为现在,我不知道在组件的生命周期中,我将在哪里获取数据,并使用这些新数据重新提交组件。具体来说,在myapps/1和/newapp/I中有一个主视图组件和一个侧栏组件

  • 我在这个拉请求中看到: > 重新加载当前路径并再次调用数据钩子 但是当我尝试从Vue组件发出以下命令时: 我得到这个错误: 我搜索了文档,但没有找到任何相关的内容。vue/vue路由器是否提供类似的功能? 我感兴趣的软件版本有: 另外,我知道是备选方案之一,但我正在寻找本机Vue选项。

  • 我有一个关于Vuejs和Vue路由器的项目。当用户登录系统时,服务器返回一个带有令牌、用户名和名字的Json文件,该文件存储在localstorage中,以便在以下请求中使用。第一个名称在布局中用于在导航栏中显示欢迎消息。注销后,localstorage被清除,问题就在这里,当其他用户在消息welcome not reload中使用新的名字付费时。

  • 在运行我的项目后,我得到了白页,但它的工作。我需要在浏览器中进行任何设置吗?并且链接将在错误之后出现

  • 问题内容: socket.io中有一种方法可以在断开连接的事件中创建超时,然后检查用户是否已重新连接? 这个想法是仅在超时后未重新连接用户时才发出数据/将用户状态保存在数据库中 编辑 :@Are Wojciechowski回答之后,我已经完成了多个标签页和F5洪水处理程序 https://gist.github.com/foohey/7696811 问题答案: 有一个。所以你可以做 我明白了 因此