路线显示重复的表格

时间:2016-08-29 13:04:44

标签: angular angular2-routing angular2-components

我在angular2中开始了一个项目,但无论出于何种原因,我的路线都会显示我的组件两次。这是相关的代码段。

app.routing.ts

// Some import 
import { AuthComponent } from './master/auth';

const appRoutes: Routes = [
  {
    path: 'master/registration',
    component: AuthComponent
  }
];
export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);

app.module.ts

import { AuthComponent } from './master/auth/auth.component';

import { AppComponent } from './app.component';
import { routing } from './app.routing';

@NgModule({
  declarations: [
    // components
    AuthComponent
 ],
 providers: [
 // some providers
 ],
 imports: [
    BrowserModule,
    ReactiveFormsModule,
    routing
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

app.component.html 包含<app-auth></app-auth>

auth.component.ts

import { Component, OnInit } from '@angular/core';
import * as all from './auth-utils';
@Component({
  moduleId: module.id,
  selector: 'app-auth',
  templateUrl: 'auth.component.html',
  styleUrls: ['auth.component.css']
})
export class AuthComponent implements OnInit {

  constructor() {}

  ngOnInit() {
  }

}

auth.component.html

<app-register-form [fields]="fields"></app-register-form>
<app-login-form [loginFields]="loginFields"></app-login-form>
<router-outlet></router-outlet>

我在这里缺少什么?

2 个答案:

答案 0 :(得分:4)

我认为您将AuthComponent直接包含在模板中,使用其选择器<app-auth></app-auth> 路由到它,以便它显示在您的<router-outlet>中。你只想做一个或另一个。

由于您尝试转到AuthComponent,请从模板中删除<app-auth></app-auth>。实际上,由于AuthComponent是一个路由目标,它根本不需要选择器,因此您可以通过从组件注释中删除该行来消除一些混淆:

@Component({
  moduleId: module.id,
  /* selector: 'app-auth', */
  templateUrl: 'auth.component.html',
  styleUrls: ['auth.component.css']
})
export class AuthComponent...

答案 1 :(得分:2)

您提到<app-auth>中已有app.component.html,这会为您提供auth组件的第一个实例,并且您<router-outlet></router-outlet>内有auth.component.html那是你的第二个实例。