2016-06-23 34 views
0

、私は私のテンプレートオブジェクトを検出した* ngが空でない(Angular2)のはなぜですか? <code>my.component.ts</code>で

<li><a *ngIf="m_userO=={}" [routerLink]="['LoginPage']">Login</a></li> 
<li><a *ngIf="m_userO!={}" (click)="logOut(m_userO)">{{m_userO.first_name}}<br>Logout</a></li> 

でこの部分を持っていると私はloginPage.component.ts

export class myComponent{ 
m_userO : userO = {}; 
} 

をエクスポートし、私はmyComponentインポートし、彼らはログインを押したときに、これは

myComponent.m_userO = this.x_userO; 
起こります

ここで私はx_userOがこの時点で空ではないことを確認しました。

ログインしていない場合は「ログイン」と表示され、そうであれば「ログアウト」と表示されます。問題は、ウェブサイトを読み込んだときに既に「ログアウト」が表示されていることですが、その理由はわかりません。ありがとう。

+0

「==」でオブジェクトを比較することはできません。それを確認することができます。 'var a = {}'と 'var b = {}'を定義し、 '(a == b)'または '(a === b)'をチェックするとtrueが返されます。 Reginaldoは、値が設定されていないかどうかを判断するためにnullまたはundefinedを使用する方が良いと提案しています。 – stp18

答えて

2

ユーザーがログに記録されていない場合はnullにしてください。ユーザーがログを作成すると、インスタンスが作成されます。この後、次のようなインスタンスを比較してください:

<li><a *ngIf="m_userO" [routerLink]="['LoginPage']">Login</a></li> 
<li><a *ngIf="!m_userO" (click)="logOut(m_userO)">{{m_userO.first_name}}<br>Logout</a></li> 
関連する問題