Angular - ожидание обновления сессии перед вызовом API - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть угловое приложение, использующее 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 компонента домашней страницы, вызывающие 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 голосов
/ 11 сентября 2018

В вашем шаблоне для вашего AppComponent продолжайте и используйте директиву *ngIf.Например:

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

Таким образом, HomeComponent не включится, пока не будет установлено this.username на AppComponent.Имеет ли это смысл?

Если этот ответ работает, пожалуйста, не забудьте принять его.

...