Я пишу угловое 5 приложение, используя CLI.Я использую gapi для извлечения пользовательских данных для заполнения формы.
Клиентский скрипт включен в файл index.html:
<head>
<meta charset="utf-8">
<script src="https://apis.google.com/js/client.js"></script>
...
</head>
Вот мой компонент с вызовом:
userProfileModel: UserProfileModel = new UserProfileModel();
ngOnInit() {
this.form = this.toFormGroup();
this.onFormChanges();
this.userService
.getUserById(this.userId)
.then(usr => {
this.mapModel(usr.result['profile']);
})
.then(() => {
this.form.patchValue(this.userProfileModel);
});
}
И метод userService:
declare var gapi: any;
export class UserService {
getUserById(id: number) {
return gapi.client.request({
method: 'GET',
'path': this.constants['endpoint_user_getbyid'] + '/' + id,
'root': this.constants['api_url']
});
}
...
}
Проблема в том, что gapi, похоже, не инициализируется сразу после завершения загрузки моего компонента: я должен установить тайм-аут> 500 мс, чтобыбыть в состоянии использовать это, и это уродливо.
Этот код дает мне следующую ошибку:
ОШИБКА TypeError: Невозможно прочитать свойство 'request' из неопределенного
Пожалуйста, не:
1 - Я ничего не установил с npm / yarn, я просто использую скрипт с объявлением gapi var.
2 - после каждой сборки код работает безлюбая ошибка и заполняет мою форму при первой загрузке страницы, а затем после одного обновления она каждый раз завершается сбоем.
Как я могу сказать angular загружать client.js при запуске перед всеми компонентами?
Спасибо!