如何使用事件发射器在两个组件之间共享数据?
how to share data between two component using Event Emitter?
你能建议当输入字段中输入内容时如何在列表中添加项目然后 enter
press.But 这些是不同的组件。我想使用 @ 将输入字段值共享到不同的组件输入,@输出,事件发射器。
我做了一个组件。
<todo></todo
>
这里是ts文件
import { Page,NavController,Modal } from 'ionic-angular/index';
import { Component, Input, Output, EventEmitter} from 'angular2/core';
@Component({
selector:'todo'
templateUrl:"addtodo.html",
})
export class AddToDO{
constructor() {
}
addItem(v){
alert(v.value)
}
}
这是我的 html
<label class="item item-input">
<span class="input-label" >Add Todo</span>
<input type="text" #todo placeholder="Add todo" (keyup.enter)="addItem(todo)">
</label>
我想在按下 enter 时添加项目列表。因此需要在组件之间共享数据
我会利用您的 AddToDO
组件中的 @Output
来触发元素的添加。所以你可以从父组件中捕获它并在列表中添加相应的数据。
@Component({
selector:'todo'
templateUrl:"addtodo.html",
})
export class AddToDO{
@Output()
todoAdded:EventEmitter = new EventEmitter();
constructor() {
}
addItem(v){
alert(v.value)
this.todoAdded.emit(v);
}
}
并且在父组件模板中:
<todo (todoAdded)="addTodoInList($event)"></todo>
这里是addTodoInList
方法的内容:
addTodoInList(todo) {
this.Todo.push(todo);
}
看到这个 plunkr:http://plnkr.co/edit/mQtQIXIJwMfJSfNVHvac?p=preview。
你能建议当输入字段中输入内容时如何在列表中添加项目然后 enter
press.But 这些是不同的组件。我想使用 @ 将输入字段值共享到不同的组件输入,@输出,事件发射器。
我做了一个组件。
<todo></todo
>
这里是ts文件
import { Page,NavController,Modal } from 'ionic-angular/index';
import { Component, Input, Output, EventEmitter} from 'angular2/core';
@Component({
selector:'todo'
templateUrl:"addtodo.html",
})
export class AddToDO{
constructor() {
}
addItem(v){
alert(v.value)
}
}
这是我的 html
<label class="item item-input">
<span class="input-label" >Add Todo</span>
<input type="text" #todo placeholder="Add todo" (keyup.enter)="addItem(todo)">
</label>
我想在按下 enter 时添加项目列表。因此需要在组件之间共享数据
我会利用您的 AddToDO
组件中的 @Output
来触发元素的添加。所以你可以从父组件中捕获它并在列表中添加相应的数据。
@Component({
selector:'todo'
templateUrl:"addtodo.html",
})
export class AddToDO{
@Output()
todoAdded:EventEmitter = new EventEmitter();
constructor() {
}
addItem(v){
alert(v.value)
this.todoAdded.emit(v);
}
}
并且在父组件模板中:
<todo (todoAdded)="addTodoInList($event)"></todo>
这里是addTodoInList
方法的内容:
addTodoInList(todo) {
this.Todo.push(todo);
}
看到这个 plunkr:http://plnkr.co/edit/mQtQIXIJwMfJSfNVHvac?p=preview。