【问题标题】:AWS Amplify signedIn Variable is undefinedAWS Amplify signedIn 变量未定义
【发布时间】:2019-06-30 20:56:09
【问题描述】:

我正在使用来自这个site 的aws-amplify,我注意到在这个站点上,this.signedIn 在这个链接的任何地方都没有使用。我正在尝试使用 is 作为指示用户是否登录的真/假值。

这是代码:

  constructor(public mediaObserver: MediaObserver, private amplifyService: AmplifyService ){
this.amplifyService.authStateChange$
.subscribe(authState => {
    this.signedIn = authState.state === 'signedIn';
  });
  console.log('This is from home constructor for signedIn boolean value ', this.signedIn)

this.signedIn is sent to the console window as : undefined

【问题讨论】:

  • 这是异步代码。你应该登录订阅功能。
  • @AbdelrhmanHussien 你是对的。当我将它登录到订阅功能时,它不会显示,因为没有任何改变。我用来确定用户是否登录。根据我登录的本地存储。每次刷新页面时,signedIn 变得未定义。当我登录时,最初登录是真的。 Bue 刷新,它变得未定义

标签: angular aws-amplify


【解决方案1】:

AppComponent 没有为signedIn 设置初始值,所以默认为undefined

export class AppComponent {
    signedIn: boolean;
    ...
}

您的 console.log(...) 在组件构造函数中,因此当日志调用被命中时 - 值仍然是 undefined

您仍然可以在模板中引用signedIn,因为undefined 值将解析为false。或者您可以更明确地使用signedIn: boolean = false 进行初始化。

【讨论】:

  • 我已登录应用程序。当我刷新页面时,为什么我已登录后,signedIn 没有变为真?我将控制台日志移至 ngOnInit() 并且签入仍然未定义。订阅者必须在等待某些东西。我还应该做什么?
  • 听起来authStateChange$ 没有在页面刷新时发出值。如果您将控制台日志移动到subscribe(...) 回调中并且日志中没有出现任何内容,那么您肯定会知道。或者在此行上设置一个断点:this.signedIn = authState.state === 'signedIn';。如果它确实命中 - 这意味着没有发射任何东西。
猜你喜欢
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 2019-12-18
  • 2020-12-05
  • 2018-11-09
  • 1970-01-01
相关资源
最近更新 更多