# #angular #firebase
Вопрос:
я создал приложение для управления клиентами, которому разрешил отображать клиентов, и у меня есть для каждого клиента кнопка сведений для отображения сведений о клиенте, поэтому я хочу получить сведения о клиенте, но это выдает ошибку: Type 'Client | undefined 'is not assignable to type' Client '
. визуальный код подчеркивает это на this.client = client;
клиент.услуги.ts
getClient(id:string) {
return this.clientsCollection.doc(id).valueChanges();
}
модельный Клиент
export interface Client{
id? : string,
firstname? : string,
lastname? : string,
email? : string,
phone? : number,
balance : number
}
подробности-client.component.ts
ngOnInit(): void {
this.id = this.router.snapshot.params['id'];
this.clientService.getClient(this.id).subscribe(client => {
this.client = client;
console.log(this.client);
});
}
Комментарии:
1.
getClient
возможно, возвращаетundefined
значение, таким образом, в обратномsubscribe
client
вызове также может бытьundefined
, ноthis.client
не допускает значенияundefined
. Проверьте значениеclient
задано, прежде чем назначать егоthis.client
2. @derpirscher thx для вас,как я могу подтвердить, что getClient возвращает данные клиента
3. это.клиент = клиент!; должно сработать. этот синтаксис говорит ts, что здесь у нас всегда будет значение
4. @Andrei о своей работе
5.
this.client = client!
исправлена проблема с компиляцией. И если гарантируется, чтоclient
это всегда будет установлено, можно использовать ненулевое утверждение!
. Но если есть возможность, этоgetClient()
действительно возвращает anull
илиundefined
вы должны проверитьif (client) this.client = client
и, возможно, вызвать ошибку в противном случае …