Поведение субъекта с кнопками

Я пытаюсь отобразить компонент, когда нажимаю кнопку. Компонент и кнопка находятся в двух не связанных между собой классах, поэтому я использую модуль Behavior Subject. Однако связь между кнопкой и службой не изменит логическое значение на «истина», и я не могу понять, почему. Вот мой код:

Data.service.ts:

import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';

@Injectable()
export class DataService{

    private showEventForm = new BehaviorSubject<boolean>(false);
    currentShowEventForm = this.showEventForm.asObservable();

    constructor(){ }

    editShowEventForm(newClick){
        this.showEventForm.next(newClick);
    }

}

HTML:

<button type = "button" class = "btn btn-primary" (click) = "toggleEventForm()">
Post Event</button>

Ц:

import { Component, OnInit } from '@angular/core';
import { DataService } from '../data.service';



@Component({
  selector: 'vhub-postEvent',
  templateUrl: './postevent.component.html',
  styleUrls: ["./postevent.component.css"]
})
export class PostEventComponent implements OnInit{
  showEventForm: boolean = false;

  constructor(private mydata: DataService) {

  }
  ngOnInit() {
    this.mydata.currentShowEventForm.subscribe(showEventForm => this.showEventForm = showEventForm);

  }
  toggleEventForm(): void{
    this.showEventForm = !this.showEventForm;
  }

}
Компонент и кнопка находятся в двух не связанных между собой классах: и все же метод toggleEventForm, вызываемый при нажатии кнопки, и подписка на тему находятся в том же классе. Вы показали единственный компонент. И вы не указали место, где компонент должен быть показан или скрыт. Вы также никогда не вызываете метод editShowEventForm службы. Разместите полный пример в stackblitz.
JB Nizet 26.12.2018 22:51
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
1
827
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам необходимо отправить данные showEventForm на ваш сервис, чтобы изменить значение BehaviorSubject.

toggleEventForm(): void{
    this.showEventForm = !this.showEventForm;
    this.mydata.editShowEventForm(this.showEventForm);
}

Рад помочь вам :) Могу я попросить вас отметить ответ как принятый, если это сработало для вас, пожалуйста?

Harun Yilmaz 26.12.2018 22:57

Другие вопросы по теме