使用EventEmitter Angular 2共享数据

时间:2018-11-01 16:05:00

标签: angular typescript

我的angular 2项目中有2个组件。 第一个组件是:

import { Component, OnInit, Output, EventEmitter } from '@angular/core';

@Component({
  selector: 'second-component',
  template: '<div><div>'
})

export class SecondComponent implements OnInit{

@Output() changeDetect = new EventEmitter<Boolean>();

private value: boolean;

ngOnInit() {
  this.value = false;
  this.doSomething();
}

doSomething(): void {
  if (2 > 1) {
    this.value = true;
  }
}

changeDetection() {
  this.changeDetect.emit(this.value);
}

}

我需要做的是,我需要在第二个组件中发送this.value值。 例如,方法doSomething()做了一些更改this.value,不管是对还是错,
第二部分:

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'first-component',
  template: '
  <div>FIRST COMPONENT<div>
  <second-component (changeDetect)="changes($event)"></second-component> 
  <span>{{_message}} 
  </span>'
})

export class FirstComponent implements OnInit {

private _change: boolean;
private _message: string;

ngOnInit() {

}

changes(event) {
  // Here i want to get boolean value from the first component to do something like below
  if (event === true) {
    message = 'true';
  }
}

}

我知道我的问题很糟糕,但我希望你只是明白我的意思。
我会为任何建议感到高兴,因为我完全迷失了。

2 个答案:

答案 0 :(得分:0)

在这种情况下,您需要手动发出该值

doSomething(): void {
  if (2 > 1) {
    this.value = true;
    this.changeDetection();
  }
}

答案 1 :(得分:0)

我认为问题在于您无法访问所发出值的属性。

changes(event) {
  // Here i want to get boolean value from the first component to do something like below
  if (event.value === true) {
    message = 'true';
  }
}

当您这样做:

if (event === true)

与以下相同:

if (event) {

您正在检查它不是null / undefined。

也正如亚历山大建议的那样,您必须连接:

changeDetection() {
  this.changeDetect.emit(this.value);
} 

如果尚未使用前端/角度代码,请转到事件处理程序。

希望有帮助。

相关问题