2017-06-06 20 views
1

メインビューには、ログインとログアウトという2つのボタンがあります。当初のみログインボタンが表示されます。角度2のサブビューからメインビューにデータを渡す方法は?

...

<button type="button" routerLink="/login" routerLinkActive="active" class="btn btn-info">Login</button> 
<button type="button" routerLink="/showlist" routerLinkActive="active" class="btn btn-info" (click)="logout()">Logout</button> 

<router-outlet></router-outlet> 

ログインボタンは、ユーザーがそこに認証されると、ユーザがある場合、私は、メインビューに戻り、結果を渡したい、サブビューが表示されますが「ログイン」ボタンを非表示にして「ログアウト」ボタンを表示したい

'router-outlet'経由でサブビューのデータをメインビューに戻すにはどうすればよいですか?

<button *ngIf="!loggedIn" type="button" routerLink="/login" routerLinkActive="active" class="btn btn-info">Login</button> 
<button *ngIf="loggedIn" type="button" routerLink="/showlist" routerLinkActive="active" class="btn btn-info" (click)="logout()">Logout</button> 

LOGGEDINがメインビューに関連付けられているコンポーネントのbooleanでなければなりません:あなたのような構造的なディレクティブngif *使用するボタンを表示し、非表示にするには

+2

共通のサービスを使用します。これを読んで、あなたのケースに合ったものが見つかるはずです(https://angular.io/docs/ts/latest/cookbook/component-communication.html) – methgaard

答えて

1

サービスを使用して、コンポーネント間で情報を共有したいと思うでしょう。ユーザーが認証されると、ユーザーが認証されていることを示すプロパティをこのサービスに設定します。

このサービスを参照すると、* ngIfを使用して何かを隠すかどうかを判断できます。

Hereはあなたに似た質問です。

+0

はい、共有データサービスを作成しました。 2つのコンポーネント(メインビューとサブビュー)によって参照され、うまく機能します。お手伝いありがとう! –

1

。 メインビューとサブビューという用語では、それぞれ、親コンポーネントと子コンポーネント(認証のための)フォームがあることを意味します。この場合は、Component Interactionを参照し、最適な通信を選択してください。

関連する問題