gpt4 book ai didi

angular - 如何从 Angular 2 中的子组件更新父组件

转载 作者:太空狗 更新时间:2023-10-29 18:19:14 26 4
gpt4 key购买 nike

我想在更新子组件时更新父组件。我试图使用事件发射器来实现这一点,但我正在使用路由器导出来调用子组件。我不知道该怎么做。

谁能指导我应该怎么做才能得到这个?

谢谢

最佳答案

您不能直接从子组件更新父组件。但是您可以创建一个服务,该服务可以从任何组件与任何其他组件进行交互,如下所示。

创建文件communication.service.ts

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Subject } from 'rxjs/Subject';

@Injectable()
export class CommunicationService {
constructor() { }

private emitChangeSource = new Subject<any>();

changeEmitted$ = this.emitChangeSource.asObservable();

emitChange(data: {}) {
this.emitChangeSource.next(data);
}

}

在子组件中

import { Component } from '@angular/core';
import { CommunicationService } from './communication.service';

@Component({
templateUrl: `./child.component.html`,
styles: ['child.component.css']
})
export class ChildComponent{
constructor(private _communicationService: CommunicationService) { }

onSomething() {
this._communicationService.emitChange({proprty: 'value'});
}
}

在父组件中

import { Component } from '@angular/core';
import { CommunicationService } from './communication.service';

@Component({
templateUrl: `./parent.component.html`,
styles: ['./parent.component.css']
})

export class ParentComponent {
constructor( private _communicationService: CommunicationService ) {
_communicationService.changeEmitted$.subscribe(data => {
// ...
})
}
}

关于angular - 如何从 Angular 2 中的子组件更新父组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48047441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com