angulr爬坑之父子组件间通信方法

父组件向子组件传数据

方法1:通过输入型绑定把数据从父组件传到子组件 @Input

通常带@Input 装饰器。

//	parent.component.html	父组件
<app-child [parentMes]="parentMes"></app-child>
//	parent.component.ts		父组件
parentMes='我是父页面要传递给子页面的信息';	//	变量名称必须与父模块html""中的名字一致
//	child.component.ts	子组件
@Input() parentMes: string;	//	变量名称必须与父模块html[]中的名字一致
ngOnInit() {
	console.log(this.parentMes);
}
方法2:通过 setter 截听输入属性值的变化
//	parent.component.html	父组件
<app-child [parentMes]="parentMes"></app-child>
//	parent.component.ts		父组件
parentMes='我是父页面要传递给子页面的信息';	//	变量名称必须与父模块html""中的名字一致
//	child.component.ts		子组件
_parentMes: string;
@Input()	//	此处后面不得跟;
set parentMes(mes: string) {	//	事件名称必须与父模块html[]中的名字一致
	this._parentMes = mes;
}
get parentMes(): string {
    return this._parentMes;
}
ngOnInit() {
	console.log(this.parentMes);
}
方法3:通过事件把数据从父组件传到子组件

父页面调用子页面事件

//	parent.component.html	父组件 
<button (click)="child.getParentMes(parentMes)"></button>
<app-child #child></app-child>
//	parent.component.ts		父组件
parentMes='我是父页面要传递给子页面的信息';	//	变量名称必须与父模块html方法中的参数名字一致
//	child.component.ts		子组件
getChildMes(mes) {	//	事件名称必须与父模块html中的事件名一致
    console.log(mes);
}

子组件向父组件传数据

方法1:通过父组件调用@ViewChild()
//	parent.component.html	父组件 
<app-child></app-child>
//	parent.component.ts		父组件
@ViewChild(ChildComponent) child: ChildComponent;
ngOnInit() {
	console.log(this.child.childMes );
}	
//	child.component.ts		子组件
childMes = '我是子页面要传递给父页面的数据';
方法2:通过“#”把数据从子组件传到父组件

子组件加上属性标记,只能在html中使用,ts中无效

//	parent.component.html	父组件 
<app-child #child></app-child>
<p>{{child.childMes}}</p>
//	child.component.ts		子组件
childMes = '我是子页面要传递给父页面的数据';
方法3:通过事件把数据从子组件传到父组件 @Output

子页面调用父页面事件;通常带@Output装饰器。

//	parent.component.html	父组件 
<app-child (mesChange)="mesChange($event)"></app-child>
//	parent.component.ts		父组件
mesChange(mes) {	//	事件名称必须与父模块html方法名字一致
	console.log(mes);  
}	
//	child.component.ts		子组件
@Output() mesChange = new EventEmitter();
ngOnInit() {
	this.mesChange.emit('我是子页面要传递给父页面的数据');
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue3中,父子组件之间的通信可以通过props和emit来实现。 1. 使用props:父组件可以通过props属性向子组件传递数据。在子组件中,可以通过接收props属性来使用这些数据。在父组件中,可以通过修改props属性的值来实现与子组件的通信。 父组件示例: ```vue <template> <div> <child-component :message="parentMessage"></child-component> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { parentMessage: 'Hello from parent component' }; } }; </script> ``` 子组件示例: ```vue <template> <div> <p>{{ message }}</p> </div> </template> <script> export default { props: { message: { type: String, required: true } } }; </script> ``` 2. 使用emit:子组件可以通过emit方法触发自定义事件,然后父组件可以通过监听这些事件来获取子组件传递的数据。 父组件示例: ```vue <template> <div> <child-component @child-event="handleChildEvent"></child-component> <p>{{ messageFromChild }}</p> </div> </template> <script> import ChildComponent from './ChildComponent.vue'; export default { components: { ChildComponent }, data() { return { messageFromChild: '' }; }, methods: { handleChildEvent(message) { this.messageFromChild = message; } } }; </script> ``` 子组件示例: ```vue <template> <div> <button @click="sendMessageToParent">Send Message to Parent</button> </div> </template> <script> export default { methods: { sendMessageToParent() { this.$emit('child-event', 'Hello from child component'); } } }; </script> ``` 这两种方式都可以实现父子组件之间的通信,你可以根据具体的需求选择使用哪种方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值