【问题标题】:Routing to multiple components on the same page路由到同一页面上的多个组件
【发布时间】:2016-10-05 15:45:41
【问题描述】:

我的页面的每个部分都是一个单独的组件,在滚动时一个接一个地定位,例如:

<sectionA></sectionA>
<sectionB></sectionB>
<sectionC></sectionC>

我见过的所有示例都在不同页面上创建到组件的路由,其中​​(用最简单的话来说)清除容器 &lt;router-outlet&gt;&lt;/router-outlet&gt; 并用分配给给定路由的组件填充它。

我所描述的情况如何,所有组件都位于同一页面上并且可见?

滚动到给定部分时如何设置正确的路线?我的想法是创建一个指令,如果部分可见或不可见,则添加类,并从主模块分配一个 onscroll 侦听器,检查当前可见的部分并分别分配路由。这是正确的做法吗?

如何链接到给定的部分?使用常规的href=#sectionId 或内置的角度链接指令?

【问题讨论】:

    标签: javascript angular typescript angular2-routing


    【解决方案1】:

    为此,您可以使用 name-router-outlet,如下所示

    演示:https://plnkr.co/edit/91YUcXI1la3B9dxzXSJp?p=preview

    App.Component.ts

    @Component({
      selector:"my-app",
      template:`
        <h3>Normal router-outlet</h3>
    
        <router-outlet></router-outlet>
    
        <hr>
    
        <h3>sectionA : named-router-outlet</h3>
        <router-outlet name='sectionA'></router-outlet>
    
        <hr>
    
        <h3>SectionB : named-router-outlet</h3>
        <router-outlet name='sectionB'></router-outlet>
      `
    })
    

    app.routing.ts

    import { Routes,RouterModule } from '@angular/router';
    import {HomeComponent} from './home.component';
    import {SectionA} from './sectionA';
    import {SectionB} from './sectionB';
    
    
    let routes: Routes = [
      { path: '', redirectTo: 'home', pathMatch: 'full'},
      { path: 'home', component: HomeComponent},
    
       { path: '', outlet: 'sectionA', component: SectionA},
       { path: '', outlet: 'sectionB', component: SectionB}
    ];
    
    export const routing = RouterModule.forRoot(routes);
    

    【讨论】:

    • 嘿,有些问题很抱歉,但我不在家,不知道如何调试 plunker 上的路由。如果我希望页面在初始化时滚动到该组件,是否足以在路由中设置路径?我设置滚动路径的方法是否正确?或者也许你有一些更好、更自然的“角度方式”?
    • 我发现要链接到页面的给定部分,我必须使用链接指令中的片段选项。但是在添加路线的同时滚动到页面的一部分呢?例如:如果我想去/sectionb 我想加载页面但被滚动到那个地方
    • 你找到滚动到 /sectionb 等的方法了吗?
    • @bogumbiker 不。我想这仍然是 github 中的一个未解决问题。
    • @micronyks 你的意思是 github 中的未解决问题?哪个回购?
    猜你喜欢
    • 1970-01-01
    • 2020-05-30
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    相关资源
    最近更新 更多