Как отписаться от post запроса Angular?

У меня есть простой post запрос, который я использую для создания сообщений. Проблема в том, что функция sendMessage() будет работать абсолютно одинаково всегда после ее первого вызова, отправляя одно и то же сообщение в БД даже после того, как я изменю его текст, пока не пересоздам таблицу. Обновление странички ничего не дает, так что проблема видимо в запросе. Я пытался отписаться от запроса сразу же после его выполнения, но в таком случае сообщение даже не появляется в БД. Я также хотел использовать Observer.complete() или что-то в этом роде, но понятия не имею, как использовать лямбда-выражение не в новом Observable, а в методе create().

Буду признателен за любую помощь. В ангуляре новичок.

Сервис

@Injectable({
  providedIn: 'root',
})
export class MessageService {
  private url = environment.apiUrl + '/message';

  constructor(private http: HttpClient) {}

  public create(request: CreateMessageRequest): Observable<void> {
    return this.http.post<void>(this.url, request);
  }
}

функция

public sendMessage(message: string){
    let request: CreateMessageRequest = {
      Message:  message, 
    }
    const req = this.messageService.create(request).subscribe();
    //req.unsubscribe();
  }

HTML

 <form>
      <textarea #refVariable [value]="test" type="text" placeholder="Write message"></textarea>
      <button class="buttonTwo" type="submit" (click)="sendMessage(refVariable.value)"></button>
  </form>

P.S.: был также попробован такой код, но с идентичным результатом

TS

export class DialogsComponent implements OnInit, OnDestroy {
constructor(private messageService: MessageService){}

private unsubscribe$ = new Subject<void>();
ngOnDestroy(): void {
    this.unsubscribe$.next();
    this.unsubscribe$.complete();
  }

public sendMessage(message: string){
    let request: 
      Message: message,
    }
    this.messageService.create(request)
    .pipe(takeUntil(this.unsubscribe$))
    .subscribe();
  }
}

P.P.S.: Не знаю, насколько это имеет значение, но после выполнения кода функции в network отображается Request Method: OPTIONS 204 No Content и Request Method: POST 200 OK.


Ответы (0 шт):