Зачем беспокоиться об асинхронных каналах, когда вы можете просто назначить данные в вашем компоненте?
// message.component.ts
class MessageComponent implements OnInit {
isServiceAPIWorking: boolean;
data: any;
constructor(private messageService: MessageService) { }
ngOnInit() {
this.messageService.getData()
.subscribe(response => {
this.isServiceAPIWorking = true;
// Assign the data
this.data = response;
},
error => {
this.isServiceAPIWorking = false;
})
}
}
// message.component.html
<div>Show Message:</div>
<div *ngIf="data">Successfull Message</div>
<div *ngIf="!data">Failure Message</div>
И в вашем сервисе есть ошибка. Если вы используете map
, ничего не возвращая, вы не получите никаких данных. Используйте tap
, если вы хотите сделать запись:
// message.service.ts
public getData() {
return this.http.get("https://jsonplaceholder.typicode.com/todos/1")
.pipe(
tap((response) => {
console.log("success");
}),
catchError(this.handleError)
)
}
Обновлен Stackblitz