【发布时间】:2019-09-10 05:40:09
【问题描述】:
我正在尝试了解如何获取属于当前登录用户的某些数据,例如全名、电子邮件等。
Firefox 控制台输出如下:
----- header.component.ts -----
this.user:
{}
authService.getUser()
Object { _isScalar: false, source: {…} }
this.authService.me()
Object { _isScalar: false, _subscribe: me() }
-------------------------------
这会打印出 authService 可以使用 console.log() 提供的内容(请参阅下面的 TypeScript 代码)。
我查看了 authService.getUser() 方法返回的对象以及 this.authService.me() 方法返回的对象,但我无法找到任何信息的位置。
我注意到在 HTML 代码中(在由 Mean.io 生成器而不是我制作的部分中)它引用“user.fullname”来在标题栏中显示用户的全名,但是如何?您将如何访问其他信息,例如用户的电子邮件、电话号码等?
我的配置文件组件 TypeScript 文件如下所示:
import { Component, OnInit, Input } from '@angular/core';
import { Router } from '@angular/router';
import { AuthService } from '../auth/auth.service';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.scss']
})
export class HeaderComponent implements OnInit {
@Input() user: any = {};
constructor(
private authService: AuthService,
private router: Router
) { }
ngOnInit() {
console.log("----- header.component.ts -----");
console.log("this.user:");
console.log(this.user);
console.log("-------------------------------");
}
profile(): void {
this.navigate('/profile');
}
logout(): void {
this.authService.signOut();
this.navigate('/auth/login');
}
navigate(link): void {
this.router.navigate([link]);
}
}
我的配置文件组件 HTML 文件如下所示:
<header >
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css?family=ZCOOL+XiaoWei" rel="stylesheet">
<mat-toolbar color="primary">
<a [routerLink]="['/']" class="logo"></a>
<a [routerLink]="['/']" class="toolbar-buttons"> Home </a>
<a class="toolbar-buttons"> Deals </a>
<a [routerLink]="['/about']" class="toolbar-buttons"> About </a>
<span class="example-spacer"></span>
<a class="links side" [routerLink]="['/auth/login']" *ngIf="!user">Login</a>
<div>
<a class="links side" *ngIf="user" [matMenuTriggerFor]="menu">
<mat-icon>account_circle</mat-icon>{{user.fullname}}
</a>
<mat-menu #menu="matMenu">
<button mat-menu-item *ngIf="user && user.isAdmin" [routerLink]="['/admin']">admin</button>
<button mat-menu-item (click)="logout()">logout</button>
<button mat-menu-item (click)="profile()">profile</button>
</mat-menu>
</div>
</mat-toolbar>
</header>
【问题讨论】:
-
您的
HeaderComponent有一个@Input() user属性,这意味着它希望其父组件将user引用传递给它。请分享此HeaderComponent的使用位置。 -
如果发布的答案对您没有帮助,请提供 stackblitz
-
@ashish.gd @Input() 是什么意思? '@' 是否意味着它是一个装饰器或类似的东西?我问这个是因为您说它希望其父组件将用户引用传递给它。也是的,我会尽快找到并分享父组件TS文件。
-
@PrashantPimpale stackblitz 是什么意思?
-
@JoshuaReeve 见here,它是一个用于网络应用程序的在线代码编辑器或主要用于
Angular
标签: node.js angular typescript mean-stack