如何在 Angular 6 的“/about”路由器中仅显示关于组件内容?

Posted

技术标签:

【中文标题】如何在 Angular 6 的“/about”路由器中仅显示关于组件内容?【英文标题】:How to display only About Component Content in '/about' Router of Angular 6? 【发布时间】:2019-03-24 11:33:40 【问题描述】:

这是一个基本的应用程序,默认情况下我有 AppComponent。我使用 --routing 标志为 Angular 6 App 生成路由。 我已经生成了“AboutComponent”来放置关于我们的页面内容。但是,除了 About Us 页面内容,“/about”还显示 AppComponent 内容。如下所示

欢迎来到主页。 这是关于我们的页面。

如何避免'/about'路由中的AppComponent/任何其他组件内容?

我对“/contact”也有同样的问题。

欢迎来到首页 这是联系我们的页面。

我们是否应该将 HomePage 内容保留在 AppComponent 中?请澄清这一点,提前谢谢。

app.component.html

<div class="container">
<div class="row">
    <div class="col-md-12">
        <h1>Welcome to Home Page</h1>
    </div>
</div>

关于.component.html

<div class="container">
<div class="row">
    <div class="col-md-12">
        <h1>About Us</h1>
    </div>
</div>

【问题讨论】:

能否把appComponent和homepageComponent的.ts文件贴一下,问题好像是router-outlet的位置问题 我在问题中添加了 AppComponent(主页)和 AboutComponent(关于我们页面)的代码。 【参考方案1】:

我想通了!看来,我不应该将 AppComponent 用作主页。我从 AppComponent html 中删除了主页内容(只保留了标签),它现在可以工作了。 “/about”只有关于内容,“/contact”只有联系内容。我创建了新的 HomeComponent 并放置了我所有的主页内容并将其设置为默认路由。感谢您的回答,他们很有帮助。

【讨论】:

太棒了!您可以对答案进行投票并将其声明为已接受,这样人们就可以确定解决方案是什么。【参考方案2】:

我不确定您的代码有什么问题,因为我需要更多信息,但是 Angular 组件的路由是这样完成的。

在您的 app.module.ts 中,指定路径和组件名称并将其添加到导入语句中

import Router, RouterLink,Routes, RouterModule, RouterLinkActive from '@angular/router';

import  AppComponent  from './app.component';
import  HomeComponent  from './home/home.component';
import  AboutUsComponent  from './about/aboutus.component';

const routes: Routes =
[
  path:'Home', component: HomeComponent,
  path:'AboutUs',component:AboutUsComponent,
  path: '', redirectTo: 'Home', pathMatch: 'full'  <== this code makes sure Home component opens by default

]

@NgModule(
  declarations: [
    AppComponent,
    HomeComponent,
    AboutUsComponent,    
  ],
  imports: [
    BrowserModule,
    RouterModule.forRoot(routes),
  ],

然后在你的 app.component.html 中

<router-outlet></router-outlet>

原因是您的 app.component.ts 有一个已定义的标签,例如 &lt;app-root&gt;&lt;/app-root&gt;,它位于您的 index.html 文件中,因此它会不由自主地呈现。因此,我们使用 app.component.html 作为文件来放置我们希望始终渲染的那些元素,&lt;router-outlet&gt; 将渲染那些可能会在导航中改变的元素

【讨论】:

【参考方案3】:

问题的原因是&lt;router-outlet&gt; 的定位。查看您的描述,您的主页中似乎有路由器插座。因此主页在路由时将保持不变。如果要随主页一起改变整个视图,则必须在主页的父级中提供router outlet,并且还必须为主页提供有效的路由!

【讨论】:

以上是关于如何在 Angular 6 的“/about”路由器中仅显示关于组件内容?的主要内容,如果未能解决你的问题,请参考以下文章

无法获取 /page angular 2 路由错误

带有选项卡的 Angular 6 RouterLink

在 Angular 2 中使用路由器插座

Angular 和 Express 路由

Angular 2 中的动态路由加载失败。 (测试版)

Angular 2 - 如何使用 this.router.parent.navigate('/about') 导航到另一条路线?