在Angular中,组件之间的交互可以通过以下几种方式实现:

1. 输入属性(Input Properties): 通过在一个组件中定义输入属性,然后在另一个组件中通过这个输入属性进行数据传递。在被传递的组件中,可以使用 @Input 装饰器来声明输入属性。
   // 在父组件中
   @Component({
     selector: 'app-parent',
     template: '<app-child [data]="parentData"></app-child>'
   })
   export class ParentComponent {
     parentData = 'Data from parent';
   }
   
   // 在子组件中
   @Component({
     selector: 'app-child',
     template: '{{ data }}'
   })
   export class ChildComponent {
     @Input() data: string;
   }

2. 输出属性和事件(Output Properties and Events): 通过在子组件中定义输出属性和事件,父组件可以监听这些事件并在相应的处理函数中获取数据。
   // 在子组件中
   @Component({
     selector: 'app-child',
     template: '<button (click)="sendData()">Send Data</button>'
   })
   export class ChildComponent {
     @Output() dataEvent = new EventEmitter<string>();

     sendData() {
       this.dataEvent.emit('Data from child');
     }
   }
   
   // 在父组件中
   @Component({
     selector: 'app-parent',
     template: '<app-child (dataEvent)="receiveData($event)"></app-child>'
   })
   export class ParentComponent {
     receiveData(data: string) {
       console.log(data); // 输出:Data from child
     }
   }

3. 服务(Services): 使用服务可以在不同的组件之间共享数据和方法。服务是单例的,可以在整个应用程序中保持状态。
   // 定义一个服务
   @Injectable({
     providedIn: 'root'
   })
   export class DataService {
     private sharedData: string;

     setSharedData(data: string) {
       this.sharedData = data;
     }

     getSharedData(): string {
       return this.sharedData;
     }
   }
   
   // 在父组件中
   @Component({
     selector: 'app-parent',
     template: '<button (click)="sendData()">Send Data</button>'
   })
   export class ParentComponent {
     constructor(private dataService: DataService) {}

     sendData() {
       this.dataService.setSharedData('Data from parent');
     }
   }
   
   // 在子组件中
   @Component({
     selector: 'app-child',
     template: '{{ data }}'
   })
   export class ChildComponent {
     data: string;

     constructor(private dataService: DataService) {}

     ngOnInit() {
       this.data = this.dataService.getSharedData();
     }
   }

这些是一些基本的组件交互方式,你可以根据具体的场景和需求选择适当的方式。


转载请注明出处:http://www.pingtaimeng.com/article/detail/4912/Angular