Поведение субъекта с помощью кнопок - PullRequest
0 голосов
/ 27 декабря 2018

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

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>

Ts:

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;
  }

}

1 Ответ

0 голосов
/ 27 декабря 2018

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

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