标签: angular2-routing

Angular 2路由无法正常工作

我似乎无法使用Angular 2中的子项进行路由.该应用程序是我的第一个Angular 2应用程序,它非常简单,顶部有一个导航栏,可以填充页面下半部分的内容.每当我点击任何导航链接时,他们都导航到同一个孩子,甚至更糟糕的是那个孩子的内容堆叠,这意味着我点击一次,孩子加载到下面,我再次点击它再次加载下面,所以我有两次,等等.

完整内容可以在这里找到: plunker

这是我的searching.routing.ts文件:

import { ModuleWithProviders } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

import { AdvancedSearchComponent } from './advanced-search/advanced-search.component';
import { GuidedSearchComponent } from './guided-search/guided-search.component';
import { QuickSearchComponent } from './quick-search/quick-search.component';

const searchesRoutes: Routes = [
    {
        children: [
            { path: 'advanced-search', component: AdvancedSearchComponent },
            { path: 'guided-search', component: GuidedSearchComponent },
            { path: 'quick-search', component: QuickSearchComponent }
        ],
        path: '',
        component: GuidedSearchComponent
    }
];

export const searchesRouting: ModuleWithProviders = RouterModule.forChild(searchesRoutes);
Run Code Online (Sandbox Code Playgroud)

这是我的app.routing.ts文件:

import { ModuleWithProviders …
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular

7
推荐指数
1
解决办法
8424
查看次数

强制Angular2在导航时重新加载组件

在Angular2 RC1和更低版本中调用路由链接总是导致组件重新加载:

<a [routerLink]="['/page', {id: 1}]">A link </a>
Run Code Online (Sandbox Code Playgroud)

使用Angular2,无RC,如果组件使用不同的参数导航到自身,则不会重新加载该组件.有没有办法让重新加载行为回来?

我理解处理此问题的另一种方法,从ActivatedRoute订阅并检测到变量,但这会导致组件逻辑的复杂性增加.

angular2-routing angular

7
推荐指数
1
解决办法
3134
查看次数

在Angular 2中加载子组件时如何隐藏父组件

在我当前的项目中,我有以下观点

在此处输入图片说明

当页面加载时,Parent Item Description应该可见和不Selected sub item description应该可见。

当我选择 a 时Sub Item xParent Item Description应该隐藏并且只有Selected sub item description可见的。

我为此创建了以下路线

{
        path: 'main/:id',
        component: MainComponent,
        children: [
          {
            path: '',
            component: MainComponent,
            pathMatch: 'full',
          },
          {
            path: 'sub/:id',
            component: SubComponent
          }
        ]
      },
Run Code Online (Sandbox Code Playgroud)

但是当运行该项目时,它并没有像我期望的那样工作。

我添加了一个<router-outlet></router-outlet>来加载子项目描述,但是当我转到主项目时,主项目本身复制在那个router-outlet.

总之,我希望仅在右侧加载所选项目的描述。

javascript angular2-routing angular

7
推荐指数
1
解决办法
4160
查看次数

Angular 2可以沿路由器传递复杂对象吗?

是否可以通过路由器发送复杂对象?这是我正在做的和尝试做的事情:

在搜索页面中,用户可以单击其中一个结果上的按钮,该结果调用导致此行触发的方法. this.router.navigate(['profile-detail', selection]);

selection物体看起来像这样只是导航之前.

{
  profile: {
    id: number,
    fname: string,
    lname: string
  },
  contact: {
    type: string,
    address: string
  },
  books: [{
    title: string,
    author: string
  }]
}
Run Code Online (Sandbox Code Playgroud)

但是,当我们到达profile-detail页面时,将this.route.snapshot.params其作为实际数据:

{
  profile: "[object Object]",
  contact: "[object Object]",
  books: "[object Object]"
}
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular

7
推荐指数
1
解决办法
6762
查看次数

路由''的配置无效:路由必须指定路径或匹配器

AppRouting.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core'; 
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from '../buyer/home/home.component';
const routes: Routes = [
   {path: '', redirectTo:'buyer', pathMatch:"full"}
]
@NgModule({
  declarations:[],
  imports:[
    BrowserModule,
    RouterModule.forRoot(routes)
  ],
   exports:[RouterModule]
})

export class AppRoutingModule {}
Run Code Online (Sandbox Code Playgroud)

BuyerRouting.ts

import {CommonModule} from '@angular/common';
import {NgModule} from '@angular/core'; 
import { Routes,RouterModule } from '@angular/router';

import { WelcomeComponent } from './welcome/welcome.component';
import { HomeComponent } from './home/home.component';

@NgModule({
declarations:[],
imports:[
    CommonModule,
    RouterModule.forChild([ …
Run Code Online (Sandbox Code Playgroud)

angular-routing angular-route-segment angular2-routing angular

7
推荐指数
1
解决办法
3198
查看次数

window.scrollTo(0, 0) 和 scrollTop = 0 不适用于 Angular 2 路由更改

这是一个非常令人沮丧的问题。除了这最后一件事,我已经完成了我的应用程序。我一直在监听路由器上的变化,并试图让它在发生变化时自动滚动到顶部。我真的在 Google 上尝试了 10 种不同的解决方案,但没有任何效果。我知道它与路由器有关,但我不知道为什么它不会滚动。这是我目前使用的代码。

app.component.ts

this.router.events.filter(event => event instanceof NavigationEnd).subscribe(event => {
  window.scroll(0, 0);
});
Run Code Online (Sandbox Code Playgroud)

应用程序组件.html

<div class="mainbody bgc-white">
  <router-outlet></router-outlet>
</div>
Run Code Online (Sandbox Code Playgroud)

我已经尝试了几种变体,特别是使用 ElementRef 抓取路由器出口元素并设置 scrollTop = 0,但这也没有效果。还尝试使用 document.body 并没有效果。我在这里缺少什么?

angular2-routing angular

7
推荐指数
2
解决办法
6536
查看次数

相对于 Angular 中的子模块导航

我有一些具有不同 url 前缀的嵌套模块。现在我想在不指定前缀的情况下在一个模块中导航(在我的模块中,我不想知道在哪个前缀下可以访问该模块)。

这些是我的 app.module 的路由:

const APP_ROUTES: Routes = [
    {
        path: '',
        children: [
            { path: '', component: MainComponent },
            { path: 'nested', loadChildren: 'app/nested/nested.module#NestedModule' }
        ]
    }
];

export const routing = RouterModule.forRoot(APP_ROUTES, { useHash: true });
Run Code Online (Sandbox Code Playgroud)

这些是我的nested.module 的路由:

const APP_ROUTES: Routes = [
    {
        path: '',
        component: NestedComponent,
        children: [
            { path: '', component: NestedSubComponent },
            { path: 'sub', component: NestedSubComponent },
            { path: 'sub/:id', component: NestedSubComponent }
        ]
    }
];

export const routing = RouterModule.forChild(APP_ROUTES); …
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular

7
推荐指数
1
解决办法
3210
查看次数

修改ActivatedRoute中的数据对象

我需要修改当前路线的数据对象中的面包屑值。这是我的路线配置。

      {
    path: "users",
    component: UserListComponent,
    children: [
      {
        path: ":id",
        component: UserComponent,
        data: {
          breadcrumb: '<User name here>'
        },
       }
    ],
    data: {
      breadcrumb: 'Users'
    }
  },
Run Code Online (Sandbox Code Playgroud)

我正在尝试这样做:

        this._route.data = { breadcrumb: this.user.displayName }; //_route is ActivatedRoute
Run Code Online (Sandbox Code Playgroud)

但它不起作用。任何帮助,将不胜感激。谢谢。

angular-routing angular2-routing angular

7
推荐指数
1
解决办法
1万
查看次数

如何在包含 RouterOutlet 的 HTML 模板中直接使用激活路由的数据?

这个我花了一段时间才弄明白,所以我希望通过在 SO 的问答方式中分享解决方案来节省某人的时间。它是这样的:

目标

我有一个 Angular8 Web 应用程序,我使用RouterModule在组件之间导航。

以下是我的路线的定义方式:

const routes: Routes = [
    { path: 'moo', component: AppMooComponent, data: { title: 'Moo Section', desc: 'Moo is the first example component.' } },
    { path: 'boo', component: AppBooComponent, data: { title: 'Boo Section', desc: 'Boo is the second example component.' } },
    { path: 'foo', component: AppFooComponent, data: { title: 'Foo Section', desc: 'Foo is the third example component.' } },
    { path: '', redirectTo: 'moo', pathMatch: 'full' …
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular angular8

7
推荐指数
1
解决办法
1497
查看次数

onsameurlnavigation“重新加载”在角度中不起作用

我面临的问题是不重新加载相同的组件。谷歌之后我发现我需要在 app-routing-module.ts 文件中添加onsameurlnavigation“reload”,但这也不起作用

下面是我的 app-routing-module.ts 代码

const routes: Routes = [
  { path: 'student', component: StudentDetailsComponent }
];

@NgModule({
  imports: [RouterModule.forRoot(routes,{onSameUrlNavigation: 'reload'})],
  exports: [RouterModule]
})
export class AppRoutingModule { }
Run Code Online (Sandbox Code Playgroud)

下面是我的路由器链接

<a [routerLink]="['/student']">
  Student
</a>
Run Code Online (Sandbox Code Playgroud)

请帮助我解决同一页面加载问题

angular2-routing angular

7
推荐指数
1
解决办法
9168
查看次数