В моем приложении Angular есть служба user-serial-service
, которая выполняет один API-вызов для извлечения серийного пользователя в виде строки, а затем сохраняет это значение в BehaviourSubject
. использовать этот сериал в конструкторе моего app.component
, но я обнаружил, что вызов API для получения сериала не завершается до того, как сработает конструктор app.component, и поэтому userSerial$
не определено.
Это, как я полагаю, объясняется тем, что app.component является первым компонентом, генерируемым Angular, и, следовательно, первым конструируемым компонентом, то есть вызов API службы не будет завершен sh до того, как приложение .component создан.
Это заставляет меня задуматься, как именно Angular инстанцировал свои зависимости и в каком порядке. Если бы я хотел сначала создать сервис, чтобы его API-вызов завершился до sh до создания экземпляра app.component, было бы это возможно? Сначала создается App.Component, а затем создаются все его перечисленные зависимости?
export class AppComponent {
constructor(private _userSerialService: UserSerialService) {
console.log("User serial: ", this._userSerialService.userSerial$.getValue()); //userSerial$ is undefined
}
}
export class UserSerialService {
public userSerial$: BehaviorSubject<string>;
constructor(private _http: HttpClient) {
this.getUserSerial().pipe(take(1)).subscribe(res => {
this.userSerial$ = new BehaviorSubject<string>(res.body.serial)
})
}
}