File

feature-libs/user/account/components/login/login.component.ts

Implements

OnInit

Metadata

selector cx-login
templateUrl ./login.component.html

Index

Properties
Methods

Constructor

constructor(auth: AuthService, userAccount: UserAccountFacade)
Parameters :
Name Type Optional
auth AuthService No
userAccount UserAccountFacade No

Methods

ngOnInit
ngOnInit()
Returns : void

Properties

user$
Type : Observable<User | undefined>
import { Component, OnInit } from '@angular/core';
import { AuthService } from '@spartacus/core';
import { User, UserAccountFacade } from '@spartacus/user/account/root';
import { Observable, of } from 'rxjs';
import { switchMap } from 'rxjs/operators';

@Component({
  selector: 'cx-login',
  templateUrl: './login.component.html',
})
export class LoginComponent implements OnInit {
  user$: Observable<User | undefined>;

  constructor(
    private auth: AuthService,
    private userAccount: UserAccountFacade
  ) {}

  ngOnInit(): void {
    this.user$ = this.auth.isUserLoggedIn().pipe(
      switchMap((isUserLoggedIn) => {
        if (isUserLoggedIn) {
          return this.userAccount.get();
        } else {
          return of(undefined);
        }
      })
    );
  }
}
<ng-container *ngIf="user$ | async as user; else login">
  <div class="cx-login-greet">
    {{ 'miniLogin.userGreeting' | cxTranslate: { name: user.name } }}
  </div>
  <cx-page-slot position="HeaderLinks"></cx-page-slot>
</ng-container>

<ng-template #login>
  <a role="link" [routerLink]="{ cxRoute: 'login' } | cxUrl">{{
    'miniLogin.signInRegister' | cxTranslate
  }}</a>
</ng-template>
Legend
Html element
Component
Html element with directive

result-matching ""

    No results matching ""