В моем приложении есть компонент с именем redirectComponent, который просто вызывается и создается из других компонентов приложения путем вызова маршрута, в котором он находится (http://localhost:4200/redirect/).
После вызова redirectComponent он делает 2 вызоваAPI для загрузки некоторых данных, связанных с формой в шаблоне, после загрузки данных я получаю доступ к форме через ViewChild и отправляю ее (метод POST), затем работа этого компонента завершается, и я возвращаюсь к корневому URL:к сожалению, даже если данные из API разрешены, связанные данные формы не обновляются и отправляются с неопределенными значениями.
Фрагмент TYPESCRIPT:
export class RedirectComponent implements AfterViewInit {
userName: string;
sessionToken: string;
sessionDuration: string;
loggedUserNavigationUrl: string = 'someUrl.com';
@ViewChild('microgameform')
microgameForm: ElementRef;
constructor(private thirdPartyGameService: ThirdPartyGameService) { }
async ngAfterViewInit(): Promise<void> {
await this.redirectUserToThirdPartyGame();
}
async redirectToThirdParty(): Promise<void> {
this.sessionDuration = '51';
const gameToken: GameToken = await this.thirdPartyGameService.getGameToken();
this.sessionToken = gameToken.Token;
const nickNameResponse: NickName = await this.thirdPartyGameService.getNickname();
this.userName = nickNameResponse.NickName;
this.microgameForm.nativeElement.submit();
this.router.navigateByUrl('/');
}
}
Фрагмент HTML:
<form #microgameform name="MicrogameForm" [action]="loggedUserNavigationUrl" method="POST" target="_blank">
<input type="hidden" name="Username" [value]="userName"/>
<input type="hidden" name="SessionToken" [value]="sessionToken"/>
<input type="hidden" name="SessionDuration" [value]="sessionDuration"/>
</form>
теперь, когда я использовал console.log (), чтобы увидеть каждую переменную непосредственно перед this.microgameForm.nativeElement.submit();
, я обнаружил, что все переменные были загружены, но не привязаны к форме, вот результат, который я получил:
переменные и значения формы перед отправкой
я думаю, что что-то упустил, мне нужнополучить данные из API, а затем отправить их в форму с помощью метода post. Возможно, у меня возникли проблемы с расой, но я не могу понять, я пытался вызвать перенаправление с разных хуков жизненного цикла (например,: ngAfterViewInit) но я получаю разные ошибки ...