【发布时间】:2021-02-26 00:10:19
【问题描述】:
我从 Angular 10 开始,我想将当前用户放在 profile.component.html 中,并将导航栏放在 app.component.html 中。这是代码。
users.ts
export interface User {
username : string
password: string
edad: number
fechaNacimiento: string
createdAt?: string
updatedAt?: string
id?:number
}
login.component.ts
import { Component, OnInit } from '@angular/core';
import { NgForm } from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router';
import { UsersService } from 'src/app/services/users.service';
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {
constructor(
public usersServices: UsersService,
private router: Router
) { }
ngOnInit(): void {
}
login(form: NgForm){
this.usersServices.login(form.value).subscribe(
res => {
console.log(res);
localStorage.setItem('token',res['token']);
this.router.navigate(['/profile',form.controls['username'].value],{
state:{username:form.controls['username']}
});
},
err => {
console.log(err)
}
)
}
}
profile.component.ts
import { Component, OnInit } from '@angular/core';
import { UsersService } from '../../services/users.service';
import { NgForm } from '@angular/forms';
import { User } from 'src/app/models/users';
import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-profile',
templateUrl: './profile.component.html',
styleUrls: ['./profile.component.css']
})
export class ProfileComponent implements OnInit {
constructor(public usersService: UsersService,private route: ActivatedRoute) {
this.route.params.subscribe(username => {
console.log(username);
})
}
ngOnInit(): void {
this.getUsers();
}
getUsers(){
this.usersService.getUsers().subscribe(
res => {
this.usersService.user = res
},
err => console.log(err)
)
}
deleteUser(id:number){
if(confirm('Are you sure you want to delete it?')){
this.usersService.deleteUser(id).subscribe(
(res) => {
this.getUsers();
},
(err) => console.log(err)
);
}
}
updateUser(form: NgForm){
this.usersService.editUser(form.value).subscribe(
res => console.log(res),
err => console.log(err)
);
}
}
<div class="col-md-8">
<table class="table table-striped">
<thead>
<tr>
<th>Username</th>
<th>Age</th>
<th>Birthdate</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let user of usersService.user">
<td>{{user.username}}</td>
<td>{{user.edad}}</td>
<td>{{user.fechaNacimiento}}</td>
<td>
<button class="btn btn-secondary btn-sm" data-toggle="modal" data-target="#staticBackdrop">
<i class="material-icons">edit</i>
</button>
<button class="btn btn-danger btn-sm" (click)="deleteUser(user.id)">
<i class="material-icons">delete</i>
</button>
</td>
</tbody>
</table>
</div>
app.component.html
<nav class="navbar navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="#">MEAN Users</a>
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" routerLink="/profile" routerLinkActive = "active">Profile</a>
</li>
</ul>
<ul class="navbar-nav ml-auto">
<ng-container *ngIf="!usersService.loggedIn(); else loggedIn">
<li class="nav-item">
<a class="nav-link" routerLink="/register" routerLinkActive = "active">Signup</a>
</li>
<li class="nav-item">
<a class="nav-link" routerLink="/login" routerLinkActive = "active">Signin</a>
</li>
</ng-container>
<ng-template #loggedIn>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" style="cursor: pointer;"></a>
<div class="dropdown-menu">
<a class="dropdown-item" (click)="usersService.logout()">Logout</a>
</div>
</li>
</ng-template>
</ul>
</div>
</nav>
<div class="container p-5">
<router-outlet></router-outlet>
</div>
我想从 app.component.html 和 profile.component.html 将单个用户放在导航栏中,但我不知道该怎么做。
非常感谢您。
【问题讨论】:
标签: html node.js angular angular10