根据输入在组件之间传递信息

时间:2018-08-25 18:39:58

标签: angular typescript behaviorsubject

我该如何以更改组件1或2上的所有值,使用Service!更新另一个组件上的值的方式来实现这一点。我知道如何使用“输出”和“输入”来完成这项工作,但是我使用的是服务。实际上,我想实现比此处显示的功能更强大的功能,但是首先,我需要了解输入交互的一部分。如果那是一次单击,那么很容易,只要单击该按钮,就可以将信息发送到服务,进行更新并发送给其订户。但是在输入的情况下,我找不到实现此目的的方法。谢谢你的帮助。 另外,如果对理解输入元素背后的逻辑有任何建议,我将非常高兴。就像,我可以阅读的任何内容。

组件1

import { Component, OnInit} from '@angular/core';
import { BehaviorServiceService } from '../service/behavior-service.service';

@Component({
  selector: 'app-childtwo',
  templateUrl: './childtwo.component.html',
  styleUrls: ['./childtwo.component.css']
})
export class ChildtwoComponent implements OnInit  {

  constructor(private behaviorService: BehaviorServiceService) { }
  data;
  ngOnInit() {
    this.behaviorService.currentMessage
      .subscribe((message)=>{
        this.data = message
      })
  }
} 

组件2

import { Component, OnInit } from '@angular/core';
import { BehaviorServiceService } from '../service/behavior-service.service';

@Component({
  selector: 'app-childone',
  templateUrl: './childone.component.html',
  styleUrls: ['./childone.component.css']
})
export class ChildoneComponent implements OnInit {

  constructor(private behaviorService: BehaviorServiceService) { }
  data;
  ngOnInit() {
    this.behaviorService.currentMessage
      .subscribe((message)=>{
        this.data = message
      })
  }

}

服务

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http'
import { BehaviorSubject } from 'rxjs';


@Injectable({
  providedIn: 'root'
})
export class BehaviorServiceService {

  private messageSource = new BehaviorSubject('string')
  currentMessage = this.messageSource.asObservable()

  constructor(private http: HttpClient){

  }

  changeMessage(message){
    this.messageSource.next(message)
  }



}

1 个答案:

答案 0 :(得分:0)

尝试实现生命周期挂钩ngOnChanges()。

https://angular.io/api/core/OnChanges