angular6材质事件发射器不工作

angular6材质事件发射器不工作,angular,angular-material,angular6,angular-event-emitter,Angular,Angular Material,Angular6,Angular Event Emitter,我正在尝试实现事件发射器,以便在将todo插入数据库时,将其添加到todo列表中。但它不起作用。请查找以下代码: todoinput组件(todo.input.html):将todo添加到数据库的组件 import { Component, OnInit, EventEmitter, Output } from '@angular/core'; import { Todos } from '../../models/Todos'; import { TodosService } from '..

我正在尝试实现事件发射器,以便在将todo插入数据库时,将其添加到todo列表中。但它不起作用。请查找以下代码: todoinput组件(todo.input.html):将todo添加到数据库的组件

import { Component, OnInit, EventEmitter, Output } from '@angular/core';
import { Todos } from '../../models/Todos';
import { TodosService } from '../../services/todos.service';

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

  @Output() newTodo: EventEmitter<Todos> = new EventEmitter();

  constructor(private _todosService: TodosService) { }

  ngOnInit() {

  }

  addTodo(text) {
    this._todosService.addTodo({
      text: text,
    }).subscribe((todo) => {
      this.newTodo.emit(todo);
    })
  }

}
当todo添加到db中时,它尝试发出一个新的todo。但它抛出了以下错误:

AppComponent.html:2 ERROR TypeError: _co.onNewTodo is not a function
    at Object.eval [as handleEvent] (AppComponent.html:2)
    at handleEvent (core.js:10258)
    at callWithDebugContext (core.js:11351)
    at Object.debugHandleEvent [as handleEvent] (core.js:11054)
    at dispatchEvent (core.js:7717)
它看起来是一个正确的实现。谁能告诉我我做错了什么?它不适用于事件发射器吗


谢谢

根据您的示例,您已经在
AppComponent
的HTML中定义了此模板
。而您的
onNewTodo($event)
todolist.component.ts
的一部分。这就是错误


您应该做的是,因为您希望在两个同级组件之间更改数据,所以您应该使用
行为子对象
实现服务,而不是子组件中的
输出
属性。

Stackblitz请?如果您提供Stackblitz示例,我将能够提供更好的答案。在那之前很难理解。但问题肯定在于你使用这个函数的地方。
import { Component, OnInit } from '@angular/core';
import { Todos } from '../../models/Todos';
import { TodosService } from '../../services/todos.service';

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

  todos: Todos[]

  constructor(private _todosService: TodosService) {
  }

  ngOnInit() {
    this._todosService.getTodos().subscribe((todos) => {
      this.todos = todos;
    })
  }

  onNewTodo(todo: Todos) {
    console.log('-- the passed todo --', todo);
    this.todos.unshift(todo);
  }
}
AppComponent.html:2 ERROR TypeError: _co.onNewTodo is not a function
    at Object.eval [as handleEvent] (AppComponent.html:2)
    at handleEvent (core.js:10258)
    at callWithDebugContext (core.js:11351)
    at Object.debugHandleEvent [as handleEvent] (core.js:11054)
    at dispatchEvent (core.js:7717)