2016-08-29 12 views
1

私はangular2でプロジェクトを開始しましたが、何らかの理由で私のルートは自分のコンポーネントを2回表示します。ここに関連するコードスニペットがあります。ルートには重複した書式が表示されます

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> 

私はここで何をしないのですか?

+0

コンポーネントの複製時にはどのような場所がありますか?私は 'auth'が重複していると理解していますか? – Mikki

+0

私の場所が '/ master/registration'のときに@Mikkiコンポーネントが複製され、'/' – styvane

+0

認証コンポーネントの重複のルートがないため、場所が'/'のときにコンポーネントが表示されます。 – Mikki

答えて

4

あなたはそれがあなたの<router-outlet>に表示されますので、それにそのセレクタ<app-auth></app-auth>ルーティングを使用して、テンプレートにあなたのAuthComponent直接含めているように私には見えます。あなたはどちらか一方をしたいだけです。

AuthComponentにルーティングしようとしているので、テンプレートから<app-auth></app-auth>を削除してください。 AuthComponentがルーティング対象であるので、あなたはそのコンポーネントのアノテーションから行を削除することによって、いくつかの混乱を削除することがありので、実際には、それは、まったくのセレクタを必要としません:

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

の後に' 'を削除し、' app.component.html'に ''を追加して動作します。簡単な質問: 'auth.component.html'にルーティングを使用し、' app-login-form'を削除せずに 'app-register-form'だけを表示する方法はありますか? – styvane

+1

はい、 'app-register-form'にルーティングして' auth.component.html'の ''にレンダリングさせることができますが、 'app-login-form'コンポーネントセレクタを使ってレンダリングされます。 – nickspoon

+1

'app-login-form * ngIf =" someConditionalProperty "を使って、' app-register-form'ルートがアクティブである間に 'app-login-form'を非表示にしたい場合は、 > – nickspoon

2

あなたは既に<app-auth>を持っていることを述べましたapp.component.html、thatsはauthコンポーネントの最初のインスタンスを提供し、auth.component.htmlの中に<router-outlet></router-outlet>という2番目のインスタンスがあります。

関連する問題