angular - 了解父组件和子组件如何处理对象
问题描述
我想知道如何角度处理父组件和子组件之间共享的对象。
让我给你看一个简单的例子: ParentComponent
@Component({
selector: 'app-parent',
template: `<app-children [(data)]="message"></app-children>
<div>Parent: {{message}}</div>`,
})
export class ParentComponent implements OnInit {
public message: string;
ngOnInit() {
this.message = 'Original message'
}
}
子组件
@Component({
selector: 'app-children',
template: `<div>Children: {{data}}</div>
<a (click)="changeMessage('Children message')">Click me!</a>`
})
export class ChildrenComponent {
@Input() public data: string;
changeMessage(message: string) {
this.data = message;
}
}
当我点击“点击我!” 链接,我只看到子消息更改,但没有看到父消息。不是同一个对象吗?
解决方案
考虑你应该从 child 发出更改的值,并且你的发射器名称应该是[your bind var name]+'Change'
这样的:
import { Component, Input, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-root',
template: `<app-children [(data)]="message"></app-children>
<div>Parent: {{message}}</div>`,
})
export class AppComponent {
public message: string;
ngOnInit() {
this.message = 'Original message'
}
}
@Component({
selector: 'app-children',
template: `<div>Children: {{data}}</div>
<a (click)="changeMessage('Children message')">Click me!</a>`
})
export class ChildComponent {
@Input() public data: string;
@Output() dataChange= new EventEmitter<string>();
changeMessage(message: string) {
this.data = message;
this.dataChange.emit(this.data);
}
}
检查DEMO 并创建自定义双向数据绑定。
推荐阅读
- c - 打印字符串数组会产生错误的输出
- javascript - javascript文本变量中的新行
- python - Python将字符串转换为列
- android - 未提供依赖项,将其视为 null 对象
- c# - AWS StepFunctions...模板错误:Fn::Sub 的实例引用了无效的资源属性
- assemblyscript - 矩阵乘法函数?
- angular - 在Angular中使用routerLink时如何处理异常
- python-3.x - 有没有办法在 Seaborn 中绘制 2 倍标准偏差?
- c# - 无法在 Webview2 上播放受 DRM 保护的视频流
- java - Spring JPA One2Many 关系 ID 未正确更新/插入