【问题标题】:Angular routing displaying the same app.component.html显示相同 app.component.html 的角度路由
【发布时间】:2022-01-11 00:16:19
【问题描述】:

我目前使用的是 Angular 13 版。

正如官方文档所说,路由应该通过在app-routing.module.ts中创建一个组件并像这样路由它来完成

const routes: Routes = [
{ path: 'first-component', component: 
FirstComponent },
{ path: 'second-component', component: 
SecondComponent },
];

但这样做会呈现我的 app.comoponent.html 文件,而不会实际更改任何内容。我可以看到网址发生了变化,但仅此而已。 其他较新的来源考虑做类似的事情

{
path:'mainpage',
loadChildren: () => import('./mainpage/mainpage.module').then(m 
=> m.MainpageModule)
}

并且,正如上面的解决方案,对我不起作用。我还添加了 <router-outlet></router-outlet> 指令(实际上已经添加了),但没有任何改变。目前正在发生什么?谢谢!

【问题讨论】:

  • 旁注,最后一行可以写成loadChildren: async () => (await import('./mainpage/mainpage.module')).MainpageModule

标签: javascript angular routes


【解决方案1】:

RouterOutlet 充当 Angular 根据当前路由器状态动态填充的占位符,因此在大多数情况下,您的 app.component.html 中可能会有 <router-outlet></router-outlet> 指令。这个元素实际上通知 Angular 用所选路由的组件更新应用程序视图。

routes 数组中的每条路由都是一个 JavaScript 对象,它包含两个属性。第一个属性是定义路由的 URL 路径的路径。第二个是定义 Angular 应该用于相应路径的组件的组件。

loadChildren 是一个不同的问题。默认情况下,Angular NgModules 会立即加载,这意味着一旦应用程序加载,所有 NgModules 也会加载,即使它们不是立即需要的。如果您希望对 Angular 模块使用延迟加载,您可以在 AppRoutingModule 路由中使用 loadChildren(而不是第一个示例中的组件)。

【讨论】:

  • 好的,完美的解释,我开始明白它的要点了。所以实际上 loadchildren 会使用延迟加载,这是我目前不想要的。但基本上你是在告诉我,一切都应该是正确的?如果我要使用路由器插座+第一个路由,我应该看到我的组件吗?如果是这样,谢谢,我的问题在别处:)
  • 感谢您对此事有所了解。我使用 app.component.html 作为介绍页面,它会与我尝试路由的任何页面重叠。路由有效地工作,但它显示了来自应用程序组件的内容。希望对初学者有所帮助!再次非常Ty
  • 非常欢迎我的朋友
猜你喜欢
  • 2021-04-22
  • 2018-02-20
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-11
  • 2022-10-14
  • 1970-01-01
相关资源
最近更新 更多