Angular-在调用API之前等待刷新会话

时间:2018-09-10 20:36:44

标签: angular aws-amplify cognito

我有一个使用AWS Amplify进行用户管理的角度应用程序。在我的主要应用程序组件中,我使用auth.currentAuthentificatedUser获取用户数据以使用正确的令牌调用API。但是我的API调用要快于auth.currentAuthentificatedUser。我该如何处理?

主要应用程序组件:

import { Component } from '@angular/core';
import {AwsService} from './aws.service';


@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})

export class AppComponent {
  public async 
  title = 'app';
  username = '';
  constructor( public awsService: AwsService) {
    this.awsService.refreshsession(() => {
      this.username=this.awsService.userData.username
      });
  }  
  ngOnInit() {


  }
};

主页组件调用API

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css']
})




export class HomeComponent implements OnInit {


  constructor(public dialog: MatDialog, private _data: cotationBase, public router: Router, public awsService: AwsService, public callAPI: callAPI, public snackBar: MatSnackBar) {


  }


  ngOnInit() {

          this.callAPI.getAPI('https://api-dev.cloudyproject.pauset.fr/v0/providers',(response) => {
            console.log(response);
            this.awsImage = '../..'+response.aws.icon;
            this.azureImage = '../..'+response.azure.icon;

            },
            (response) => {
              console.log(response);},
            ) 

  }

1 个答案:

答案 0 :(得分:0)

AppComponent的模板中,继续使用*ngIf指令。像这样:

<app-component>
    <home-component *ngIf="username">
    </home-component>
</app-component>

这样,在您将HomeComponent设置为this.username之前,它不会打开AppComponent。这有道理吗?

如果此答案有效,请不要忘记接受它。