Я хотел бы изменить свой код в сторону стиля Reactive, однако я борюсь с синтаксисом при попытке передать параметры внутри асинхронного канала в Observable
.
Мой текущий рабочий код, который не является Реактивным (stydent.component.ts)
:
deleteStudent(id: number) {
this.uniCrudService.deleteStudent(id)
.subscribe( res => {
console.log(`deleteStudent: ${JSON.stringify(res)}`);
this.getStudents();
});
}
В моем шаблоне student.component.html
я называю deleteStudent
как:
<a routerLink="" (click)="deleteStudent(student.id)">Delete</a>
Проблема в том, что мне нужно использовать канал async
в наблюдаемой функции, которая получает параметр (для стиля Reactive?).
Например:
deleteStudent(id: number): Observable<Student> {
return this.deleteStudent$ = this.uniCrudService.deleteStudent(id)
.pipe( tap (res => {
console.log(`deleteStudent: ${JSON.stringify(res)}`);
this.getStudents();
}));
и в шаблоне:
<a routerLink="" (click)="deleteStudent(student.id) | async">Delete</a>
Однако это выдает ошибку: Cannot have a pipe in an action expression
. Глядя на этот ответ Я понимаю, что не могу сделать этот фрагмент моего кода реактивным, и я буду вынужден оставить нежелательный subscription
. Это тот случай? Как мне сделать мой deleteStudent
реактивным и избавиться от subscription
?