html - Angular 8. 如何在登录页面点击登录按钮,并在下一页的导航栏组件上显示用户名?
问题描述
我的页面有 3 个组件,导航栏组件、菜单组件和登录组件。app.component.html 看起来像这样:
<app-navbar></app-navbar>
<router-outlet></router-outlet>
登录和菜单组件将在“router-outlet”中呈现,导航栏将在“app-navbar”中呈现。当我输入用户名和密码并单击提交按钮时,如果登录成功,我会将“路由器出口”从登录组件路由到菜单组件。我的愿望是当菜单组件出现时,我会在导航栏上看到用户的名字和姓氏,在新行中心的标题下。像这样的东西:
这是导航栏的 HTML:
<nav class="navbar rf-scanner-navbar">
<div class="mx-auto d-sm-flex d-block flex-sm-nowrap">
<h1>{{ title }}</h1>
</div>
<br>
<div *ngIf="currentUserInfo" class="row">
<p class="userInfo">{{currentUserInfo.firstname}} {{currentUserInfo.lastname}}</p>
</div>
</nav>
问题是,我需要刷新整个页面以强制导航栏重新加载以显示名称。无论如何我可以使导航栏组件能够检测到更改的数据并显示它吗?
这是 Navebar 组件的 ts 代码,我注入了可注入的 authService 文件,该文件将调用 Api 来获取用户信息:
import { Component, OnInit } from '@angular/core';
import { AuthService } from '../_services/auth.service';
import { User } from '../_models/user';
@Component({
selector: 'app-navbar',
templateUrl: './navbar.component.html',
styleUrls: ['./navbar.component.css']
})
export class NavbarComponent implements OnInit {
title = 'hello-world';
currentUserInfo = this.authService.currentUserValue;
constructor(
private authService: AuthService,
) { }
ngOnInit() {
}
}
我在身份验证服务文件中也有这个公共方法:
public get currentUserValue(): User {
return this.currentUserSubject.value;
}
还有一个问题,如何使名称 Div 在标题下的新行的中心(“hello-world”)?到目前为止,它们在同一行,
不起作用,我在上面的图片中拍照。
如果您需要有关此的更多信息,请告诉我。
解决方案
您可以直接使用 authService 属性:
<div *ngIf="authService.currentUserValue" class="row">
<p class="userInfo">{{authService.currentUserValue.firstname}} {{authService.currentUserValue.lastname}}</p>
</div>
该值将随着服务值的更新而更新。
要将 div 置于新行的中心,请尝试将其移至 h1 标签下方:
<nav class="navbar rf-scanner-navbar">
<div class="mx-auto d-sm-flex d-block flex-sm-nowrap">
<h1>{{ title }}</h1>
<div *ngIf="currentUserInfo" class="row">
<p class="userInfo">{{currentUserInfo.firstname}}
{{currentUserInfo.lastname}}
</p>
</div>
</div>
</nav>
将“文本对齐:中心”放在类/样式上。
推荐阅读
- python - 如何使用 PyCharm 和 Pytorch 快速获取文档
- python - 如何将 withcolumn 方法与基于多个条件的过滤器一起使用?
- javascript - 下载按钮没有在javascript中下载图像
- php - 针对单个 id 更新多个 id (Laravel)
- python - Jupyter 服务器无法启动
- websocket - 如何扩展 websocket 服务?
- ubuntu - 使用 buildozer 为我的三星构建 apk 时发生错误
- python - 使用 seaborn 时如何从箱线图中获取统计值?
- arrays - 输出失败/其他条件
- javascript - 使用用于拆分的相同分隔符加入字符串