Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 不工作部件之间的角度4通信_Angular_Typescript_Angular Components - Fatal编程技术网

Angular 不工作部件之间的角度4通信

Angular 不工作部件之间的角度4通信,angular,typescript,angular-components,Angular,Typescript,Angular Components,我无法在两个组件之间进行通信: 我有两个组件,一个用于保存用户名和电子邮件(请参见屏幕截图),另一个用于显示添加的用户。 第一部分: @Output() messageToParent : EventEmitter<any> = new EventEmitter(); sendMessageToParent() { this.messageToParent.emit("message from child"); } receiveMessageFromChild(m

我无法在两个组件之间进行通信:

我有两个组件,一个用于保存用户名和电子邮件(请参见屏幕截图),另一个用于显示添加的用户。

第一部分:

@Output() messageToParent : EventEmitter<any> = new EventEmitter();

sendMessageToParent() 
{ 
   this.messageToParent.emit("message from child"); 
}
receiveMessageFromChild(message) 
{
   console.log(message); // Console reads : "message from child"
}
添加用户

@Component({
  selector: 'app-adduser',
  templateUrl: './adduser.component.html',
  styleUrls: ['./adduser.component.css']
})




export class AdduserComponent implements OnInit {
  @Output('users') users = new EventEmitter<any[]>();
  listOfUsers: Array<{username:string,email:string}>=[];
 username:string="";
 email:string="";
  constructor() { }

  ngOnInit() {
  }

  addedUser(event:Event){
    console.log('emitUser event is called');
    this.users.emit(this.listOfUsers);
  }

  addUser(){
  this.listOfUsers.push( {username:this.username,email:this.email});
  }

  processUser(){

  }
}
@组件({
选择器:“应用程序添加用户”,
templateUrl:'./adduser.component.html',
样式URL:['./adduser.component.css']
})
导出类AdduserComponent实现OnInit{
@输出(“用户”)用户=新的EventEmitter();
列表用户:数组=[];
用户名:string=“”;
电子邮件:string=“”;
构造函数(){}
恩戈尼尼特(){
}
加法器(事件:事件){
log('emitUser事件被调用');
this.users.emit(this.listOfUsers);
}
addUser(){
this.listOfUsers.push({username:this.username,email:this.email});
}
processUser(){
}
}
第一个组件的HTML代码:

@Output() messageToParent : EventEmitter<any> = new EventEmitter();

sendMessageToParent() 
{ 
   this.messageToParent.emit("message from child"); 
}
receiveMessageFromChild(message) 
{
   console.log(message); // Console reads : "message from child"
}

用户名
电子邮件
地址用户
主模板:

<parent>
   <child (messageToParent) ="receiveMessageFromChild($event)"></child>
</parent>
Angular采用自上而下的数据流方法。这意味着子对象通过输入从父对象获取信息,如果子对象必须告诉父对象某些信息,则必须明确地发出它想要告诉的信息

child.component.ts

从'@angular/core'导入{Component,OnInit,Input};
@组成部分({
选择器:'子组件',
templateUrl:“./Child component.html”,
样式URL:['./子组件.css']
})
导出类ChildComponent实现OnInit{
@Input()giveToChild:字符串
@Output()tellParent=neweventemitter();
构造函数(){}
恩戈尼尼特(){
}
tellParentFunc(){
这个.tellParent.emit(“谢谢爸爸妈妈”)
}

有一个完整的组件交互指南,您永远不会从输出中发出任何东西:addedUser方法永远不会在任何地方调用。当addUser()时,您需要amit在您添加新用户后调用。并且您尚未发布应用程序组件的代码,因此我们不知道其addedUser方法的作用。并且您不会将任何内容作为输入传递给processuser组件:
[users]=”
。简言之,您需要阅读有关输入和输出的文档。
import { Component, OnInit,Input } from '@angular/core';

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

  @Input() giveToChild:string
  @Output() tellParent = new EventEmitter<any>();

  constructor() { }

  ngOnInit() {

  }
  tellParentFunc(){
    this.tellParent.emit("Thanks dada and mama")
  }