Маршрут отображает дубликат формы
Я запустил проект в 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 ответа
Мне кажется, что ты включаешь 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...
Вы упомянули, что у вас уже есть <app-auth>
в вашем app.component.html
это дает вам первый экземпляр auth
компонент, и у вас есть <router-outlet></router-outlet>
внутри вашего auth.component.html
это ваш второй случай.