profile.component.ts 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { Component, OnInit } from '@angular/core';
  2. import { CommonModule } from '@angular/common';
  3. import { FormBuilder, FormGroup, Validators, ReactiveFormsModule } from '@angular/forms';
  4. import { UserService, UserInfo } from '../../services/user.service';
  5. import { NotificationService } from '../../services/notification.service';
  6. import { ItemService } from '../../services/item.service';
  7. @Component({
  8. selector: 'app-profile',
  9. standalone: true,
  10. imports: [CommonModule, ReactiveFormsModule],
  11. templateUrl: './profile.component.html',
  12. styleUrl: './profile.component.scss'
  13. })
  14. export class ProfileComponent implements OnInit {
  15. userInfo: UserInfo | null = null;
  16. isEditing = false;
  17. userForm: FormGroup;
  18. constructor(
  19. private userService: UserService,
  20. private notificationService: NotificationService,
  21. private itemService: ItemService,
  22. private fb: FormBuilder
  23. ) {
  24. this.userForm = this.fb.group({
  25. nickname: ['', Validators.required],
  26. gender: ['other', Validators.required],
  27. age: [0, [Validators.required, Validators.min(0), Validators.max(150)]]
  28. });
  29. }
  30. ngOnInit(): void {
  31. this.loadUserInfo();
  32. }
  33. loadUserInfo() {
  34. this.userInfo = this.userService.getUserInfo();
  35. if (this.userInfo) {
  36. this.userForm.patchValue(this.userInfo);
  37. }
  38. }
  39. startEditing() {
  40. this.isEditing = true;
  41. }
  42. saveUserInfo() {
  43. if (this.userForm.valid) {
  44. this.userService.saveUserInfo(this.userForm.value);
  45. this.userInfo = this.userForm.value;
  46. this.isEditing = false;
  47. }
  48. }
  49. cancelEditing() {
  50. this.isEditing = false;
  51. this.loadUserInfo();
  52. }
  53. checkNotificationPermission() {
  54. this.notificationService.requestPermission().then(granted => {
  55. alert(granted ? '通知权限已开启' : '通知权限已拒绝');
  56. });
  57. }
  58. clearAllData() {
  59. if (confirm('确定要清空所有数据吗?此操作不可恢复!')) {
  60. localStorage.clear();
  61. alert('数据已清空');
  62. window.location.reload();
  63. }
  64. }
  65. }