角6链接到其他组件中的部分?

时间:2018-11-30 13:57:59

标签: html angular angular6

我有一个带有以下代码的导航栏组件:

 <ul class="navbar-nav mx-auto">
              <li class="nav-item active">
                <a class="nav-link" href="#" >Inicio <span class="sr-only"></span></a>
              </li>
              <li class="nav-item active">
                <a class="nav-link" href="#">Here Link Home Section 2 <span class="sr-only"></span></a>
              </li>


</ul>

,还有另一个包含三个部分的HomeComponent组件:

<section id="home_one">
    stuff 
    section
    one
</section>

<section id="home_two">
   stuff 
   section
   two
</section>

<section id="home_three">
    stuff 
    section
    three
</section>

如何从导航栏链接链接到另一个组件(homeComponent)中的特定部分(第2节)?谢谢。

3 个答案:

答案 0 :(得分:2)

Angular 6.1的新功能称为anchorScrolling,启用此选项并使用Router fragement

app.module.ts

@NgModule({
  imports: [BrowserModule, FormsModule, RouterModule.forRoot(routes, {
    anchorScrolling: 'enabled',
  })],
  declarations: [AppComponent, HelloComponent, ComponentbComponent],
  bootstrap: [AppComponent]
})

app.component.html

<a [routerLink]="['item']" [fragment]="'section2'">
    section2
</a>
<router-outlet></router-outlet>

示例:https://stackblitz.com/edit/angular-zgmsuw

答案 1 :(得分:0)

如果这是在选项卡上单击并更改选项卡的相应部分:-

.ts

tab = 'tab0';

.html

<ul class="navbar-nav mx-auto">
<li class="nav-item active" (click)='tab = "tab0"'>
<a class="nav-link" href="#" >Inicio <span class="sr-only"></span></a>
</li>
<li class="nav-item active" (click)='tab = "tab1"'>
 <a class="nav-link" href="#">Here Link Home Section 2 <span class="sr-only"></span></a>
</li>
 </ul>


<section id="home_one" *ngIf="tab ==='tab0'">
stuff 
section
one
// Here you can pass selctor of a separate component for each section
// <tab0-component></tab0-component>
    </section>

    <section id="home_two" *ngIf="tab ==='tab1'">
       stuff 
       section
       two
    </section>

    <section id="home_three" *ngIf="tab ==='tab2'">
        stuff 
        section
        three
    </section>

如果要转到相应的片段onclick,即在该文档中滚动查看:-

Angular2 Routing with Hashtag to page anchor

如果要更改每个选项卡的路线,则:-

app.routing.ts

// create routes for each tab

.ts

constructor(public router:Router){
}

opentab(routes){
this.router.navigate[routes]
}

.html

<ul class="navbar-nav mx-auto">
    <li class="nav-item active" (click)= 'opentab("tab0")'>
    <a class="nav-link" href="#" >Inicio <span class="sr-only"></span></a>
    </li>
    <li class="nav-item active" (click)= 'opentab("tab1")'>
     <a class="nav-link" href="#">Here Link Home Section 2 <span class="sr-only"></span></a>
    </li>
     </ul>

<router-outlet></router-outlet>

答案 2 :(得分:0)

以角度的方式使用Angular Router更好

创建三个组件而不是各个部分

home_one
home_two
home_three

然后在您的应用模块或单独的路由模块中声明您的路由,例如:

const routes: Routes = [
  { path: 'home_one', component: home_one},
  { path: 'home_two', component: home_two },
  { path: 'home_three', component: home_three }
  { path: '', component: home }
  { path: '*', component: home }
];

然后在您的导入中添加路线

@NgModule({
  imports: [RouterModule.forRoot(routes)],
})

然后在您的“主页”中或您要渲染这些部分的“添加路由器出口”,这将是类似的

<your-navbar-component></your-navbar-component>
<router-outlet></router-outlet>

在导航栏中,为路线正确配置锚点

<ul class="navbar-nav mx-auto">
              <li class="nav-item "  routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">
                <a class="nav-link" [routerLink]="['/home_one']" >Home One <span class="sr-only"></span></a>
              </li>
          <li class="nav-item "  routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">
                <a class="nav-link" [routerLink]="['/home_two']" >Home Two<span class="sr-only"></span></a>
              </li>
              <li class="nav-item "  routerLinkActive="active" [routerLinkActiveOptions]="{exact: true}">
                <a class="nav-link" [routerLink]="['/home_three']" >Home Three<span class="sr-only"></span></a>
              </li>

</ul>

有关更多信息,请访问官方文档: https://angular.io/guide/router