要解决父组件未将数据传递给第二个子组件的问题,你可以使用Angular的输入和输出属性来实现。
首先,在父组件中,你需要定义一个属性来保存要传递给第二个子组件的数据。然后,在父组件的模板中,你需要使用属性绑定来将数据传递给第二个子组件。
在父组件的.ts文件中:
import { Component } from '@angular/core';
@Component({
selector: 'app-parent',
template: `
`
})
export class ParentComponent {
dataFromChild1: string;
onDataReceived(data: string) {
this.dataFromChild1 = data;
}
}
在父组件的模板中,我们使用了app-child1组件,并使用(dataEvent)="onDataReceived($event)"来监听子组件发出的dataEvent事件,并将接收到的数据传递给onDataReceived方法。
然后,我们使用app-child2组件,并使用[data]="dataFromChild1"将dataFromChild1属性的值绑定到子组件的data输入属性上。
在第一个子组件的.ts文件中:
import { Component, EventEmitter, Output } from '@angular/core';
@Component({
selector: 'app-child1',
template: `
`
})
export class Child1Component {
@Output() dataEvent = new EventEmitter();
sendDataToParent() {
const data = 'Data from Child 1';
this.dataEvent.emit(data);
}
}
在第一个子组件中,我们定义了一个输出属性dataEvent,并使用@Output()装饰器将其标记为输出属性。然后,在sendDataToParent方法中,我们创建了一个data变量,并使用emit方法将数据发送到父组件。
在第二个子组件的.ts文件中:
import { Component, Input } from '@angular/core';
@Component({
selector: 'app-child2',
template: `
Data from Child 1: {{ data }}
`
})
export class Child2Component {
@Input() data: string;
}
在第二个子组件中,我们定义了一个输入属性data,并使用@Input()装饰器将其标记为输入属性。然后,在模板中,我们使用插值表达式{{ data }}来显示从父组件接收到的数据。
这样,当第一个子组件点击按钮并发送数据到父组件时,父组件会接收到数据并将其传递给第二个子组件,第二个子组件会显示接收到的数据。
上一篇:Angular 16中,"ngModel未在输入值中注册"。
下一篇:Angular 16:CSRF配置:我还能使用HttpXsrfInterceptor和HttpXsrfCookieExtractor类吗?Intelli-J说它们不存在。