Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2022, 11:53   #1
karnotavr
Новичок
Джуниор
 
Регистрация: 22.07.2022
Сообщений: 1
По умолчанию Angular/RxJS как описаться от пост запроса?

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

Сервис

Код:
@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);
  }
}
TS

Код:
public sendMessage(message: string){
    let request: CreateMessageRequest = {
      Message:  message, 
    }
    const req = this.messageService.create(request).subscribe();
    //req.unsubscribe(); если добавить, сообщение не пройдет в бд
  }
HTML

Код 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: CreateMessageRequest = {
      Message: message,
    }
    this.messageService.create(request)
    .pipe(takeUntil(this.unsubscribe$))
    .subscribe();
  }
}
Еще один нерабочий вариант

Код:
export class DialogsComponent implements OnInit, OnDestroy {
constructor(private messageService: MessageService){}
alive: boolean = true
ngOnDestroy(): void {
    this.alive = false;
  }

public sendMessage(message: string){
    let request: CreateMessageRequest = { 
      Message: message,
    }
    this.alive = true;
    this.messageService.create(request)
    .pipe(takeWhile(() => this.alive))
    .subscribe();
  }
}
karnotavr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
react/ react hook с Rxjs Luno_frontend JavaScript, Ajax 0 16.01.2021 19:51
Кодировка + отправка пост запроса Predator199 C# (си шарп) 4 15.02.2015 22:35
Отправка пост запроса snip4ik Работа с сетью в Delphi 5 10.03.2013 04:31
отправка не стандартного пост запроса onecent Работа с сетью в Delphi 8 25.11.2011 19:57
Как работать с tStream для отправки пост запроса? Айдар Работа с сетью в Delphi 2 04.01.2011 20:34