标签: angular2-routing

Angular2 - 'router-outlet'不是已知元素

我创建了具有深子路径的路线.我添加<router-outlet>AdminComponent组件中,我将其包装到NgModule中.但刷新页面后,我收到此错误:

'router-outlet' is not a known element
Run Code Online (Sandbox Code Playgroud)

也许是因为我忘了将一些模块导入admin.module.ts

请帮忙.谢谢.

app.routes.ts

export const routes: Routes = [
    {
        path: '',
        component: AppComponent,
        children: [
            {
                path: '',
                component: LoginComponent
            },
            {
                path: 'admin',
                component: AdminComponent
            },
            {
                path: 'user',
                component: UserComponent
            },
            {
                path: 'there',
                component: ThereComponent
            }
        ]
    }
]
Run Code Online (Sandbox Code Playgroud)

app.module.ts

@NgModule({
    imports: [
        BrowserModule,
        AppRoutes,
        FormsModule,
        ReactiveFormsModule,
        HttpModule,
        RouterModule,
        TranslateModule.forRoot({
            provide: TranslateLoader,
            useFactory: (http: Http) => {
                return new TranslateStaticLoader(http, './src/assets/i18n', '.json')
            },
            deps: …
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular

77
推荐指数
3
解决办法
9万
查看次数

Angular 2如果路径不存在,如何重定向到404或其他路径

/如果角度2中不存在路径,我试图重定向404 其他路径

我尝试研究有角度1的一些方法但不是角度2.

这是我的代码:

@RouteConfig([
{
    path: '/news',
    name: 'HackerList',
    component: HackerListComponent,
    useAsDefault: true
},
{
    path: '/news/page/:page',
    name: 'TopStoriesPage',
    component: HackerListComponent
},
{
    path: '/comments/:id',
    name: 'CommentPage',
    component: HackerCommentComponent
}
])
Run Code Online (Sandbox Code Playgroud)

所以例如,如果我重定向到/news/page/它然后它工作,它返回一个空页面你如何处理这种情况发生?

javascript angular2-routing angular

75
推荐指数
5
解决办法
10万
查看次数

Angular 2 - Routing - CanActivate使用Observable

我有一个实现CanActivateAuthGuard(用于路由).

canActivate() {
    return this.loginService.isLoggedIn();
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,CanActivate结果依赖于http-get-result - LoginService返回一个Observable.

isLoggedIn():Observable<boolean> {
    return this.http.get(ApiResources.LOGON).map(response => response.ok);
}
Run Code Online (Sandbox Code Playgroud)

我如何将它们结合在一起 - 使CanActivate依赖于后端状态?

angular2-routing angular2-http angular

75
推荐指数
3
解决办法
6万
查看次数

将参数传递给路线保护员

我正在开发一个具有很多角色的应用程序,我需要使用防护来根据这些角色阻止导航到应用程序的某些部分.我意识到我可以为每个角色创建单独的防护类,但宁愿有一个我可以以某种方式传递参数的类.换句话说,我希望能够做类似的事情:

{ 
  path: 'super-user-stuff', 
  component: SuperUserStuffComponent,
  canActivate: [RoleGuard.forRole('superUser')]
}
Run Code Online (Sandbox Code Playgroud)

但是,既然你传递的只是你后卫的类型名称,就不会想到办法做到这一点.我是否应该咬紧牙关并为每个角色编写单独的防护等级,并在单一的参数化类型中打破我的优雅幻想?

typescript angular2-routing angular

74
推荐指数
5
解决办法
3万
查看次数

Angular 2:从父组件获取RouteParams

如何从父组件获取RouteParams?

App.ts:

@Component({
  ...
})

@RouteConfig([
  {path: '/', component: HomeComponent, as: 'Home'},
  {path: '/:username/...', component: ParentComponent, as: 'Parent'}
])

export class HomeComponent {
  ...
}
Run Code Online (Sandbox Code Playgroud)

然后,在中ParentComponent,我可以轻松获取用户名参数并设置子路由.

Parent.ts:

@Component({
  ...
})

@RouteConfig([
  { path: '/child-1', component: ChildOneComponent, as: 'ChildOne' },
  { path: '/child-2', component: ChildTwoComponent, as: 'ChildTwo' }
])

export class ParentComponent {

  public username: string;

  constructor(
    public params: RouteParams
  ) {
    this.username = params.get('username');
  }

  ...
}
Run Code Online (Sandbox Code Playgroud)

但是,如何在这些子组件中获得相同的"用户名"参数?做与上面相同的技巧,不会这样做.因为这些参数是在ProfileComponent中定义的还是什么?

@Component({
  ...
})

export class ChildOneComponent {

  public …
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular

71
推荐指数
4
解决办法
4万
查看次数

如何对依赖ActivatedRoute参数的组件进行单元测试?

我是一个单元测试用于编辑对象的组件.该对象具有唯一性id,用于从服务中托管的对象数组中获取特定对象.具体id是通过路由传递的参数获得的,特别是通过ActivatedRoute类传递.

构造函数如下:

 constructor(private _router:Router, private _curRoute:ActivatedRoute, private _session:Session) {
}

ngOnInit() {
    this._curRoute.params.subscribe(params => {
        this.userId = params['id'];
        this.userObj = this._session.allUsers.filter(user => user.id.toString() === this.userId.toString())[0];
Run Code Online (Sandbox Code Playgroud)

我想对这个组件运行基本的单元测试.但是,我不确定如何注入id参数,组件需要此参数.

顺便说一下:我已经有了Session服务的模拟,所以不用担心.

unit-testing angular2-routing angular2-testing angular

70
推荐指数
5
解决办法
5万
查看次数

Angular2在同一个模板中有多个路由器插座

是否可以在同一个模板中安装多个路由器插座?

如果是,那么如何配置路由?

我正在使用angular2 beta.

angular2-template angular2-routing angular

69
推荐指数
4
解决办法
9万
查看次数

如何确定Angular中的上一页网址?

假设我当前在具有URL的页面上/user/:id.现在从这个页面我导航到下一页:id/posts.

现在有办法,以便我可以检查以前的URL是什么,即/user/:id.

以下是我的路线

export const routes: Routes = [
  { 
    path: 'user/:id', component: UserProfileComponent
  },
  {  
    path: ':id/posts', component: UserPostsComponet 
  }
];
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular

68
推荐指数
9
解决办法
9万
查看次数

模块'AppModule'声明的意外值'undefined'

这有什么不对?我试图让它工作,但我在标题中得到了错误.我已经把它包括<router-outlet></router-outlet>app.component.html那被templateUrl称为app.component.ts,仍然没有运气.

app.module.ts:

import { NgModule }             from '@angular/core';
import { BrowserModule }        from '@angular/platform-browser';
import { FormsModule }          from '@angular/forms';
import { RouterModule, Routes } from '@angular/router';


import { AppComponent }  from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { TopnavComponent } from './components/navbars/topnav/topnav.component';
import { LeftnavComponent } from './components/navbars/leftnav/leftnav.component';
import { LeftnavsecondaryComponent } from './components/navbars/leftnav-secondary/leftnav-secondary.component';
import { WorldofwarcraftComponent } from './components/games/worldofwarcraft/worldofwarcraft.component';

@NgModule({
    imports:    [ BrowserModule, FormsModule, AppRoutingModule ],
    declarations: …
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular

64
推荐指数
4
解决办法
4万
查看次数

如何在Angular 2中设置Bootstrap navbar"active"类?

如何在Angular 2中设置Bootstrap navbar"active"类?我只找到了Angular 1方式.

当我转到" 关于"页面时,添加class="active"到" 关于",然后class="active"在" 主页"上删除.

<ul class="nav navbar-nav">
    <li class="active"><a [routerLink]="['Home']">Home</a></li>
    <li><a [routerLink]="['About']">About</a></li></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

谢谢

nav twitter-bootstrap angular2-routing angular

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