如何使用 ngOnInit 和 Angular 9 检索用户标识符

Posted

技术标签:

【中文标题】如何使用 ngOnInit 和 Angular 9 检索用户标识符【英文标题】:How to retrieve a user identifier using ngOnInit with Angular 9 【发布时间】:2021-03-24 22:39:33 【问题描述】:

我是 Angular 的新手,我正在创建一个忘记密码的链接,当用户与之交互时,它会向他们的电子邮件地址发送一封带有唯一密码令牌的电子邮件,以便他们可以重置密码。我希望能够识别用户,使用他们的用户标识符并将他们的电子邮件地址与此匹配并发送电子邮件。

    是否需要将用户标识符或用户电子邮件地址传递到服务中? 如何构建 ngOnInit?

// user.service.ts

public forgotUserPasswordVerification(email: string): Observable<void>  // email or identifier?? 
        return this.http.post<void>('api/verifications/forgotpasswordverification', email);
     

//忘记密码.component.ts

ngOnInit() 
this.userService.forgotUserPasswordVerification(this.email) // this.email or this.identifier?  
.subscribe(data => 
this.success = true;
);

【问题讨论】:

【参考方案1】:

我认为不需要为此创建组件。尝试在 userService 中实现这个逻辑:

将用户 ID 传递给您的 forgotUserPasswordVerification(userId) 方法,在其中您应该能够执行 2 个操作: 首先

let userEmail= this.userService.getUserEmailById(this.id);

然后

this.userService.forgotUserPasswordVerification(this.userEmail)
      .pipe(first())
      .subscribe(
        () => 
          this.success = true;
        ,
        (error) => 
          // display an error toast maybe
        
      );
  

一旦用户点击链接,就在登录组件中调用你的 forgotUserPasswordVerification(userId) 方法。

【讨论】:

以上是关于如何使用 ngOnInit 和 Angular 9 检索用户标识符的主要内容,如果未能解决你的问题,请参考以下文章

如何从 ngOnInit Angular 中的服务获取数据

Angular 6:在 ngOnInit 中使用 @Input 的值

Angular测试如何防止ngOnInit调用直接测试方法

Angular`ngOnInit`中的异步/等待

在 Angular 5 中的 ngoninit 之后如何运行函数

Angular ngOnInit 如何将订阅结果用于另一个订阅/后端调用?