Comment mettre à jour le composant parent à partir du composant enfant dans Angular 2


Aakriti.G

Je souhaite mettre à jour le composant parent lorsque le composant enfant est mis à jour. J'essayais d'y parvenir en utilisant un émetteur d'événements mais j'utilise la sortie du routeur pour appeler le composant enfant. Je ne sais pas comment faire ça.

Quelqu'un peut-il me guider, que dois-je faire pour y parvenir?

Merci

Adeeb basheer

Vous ne pouvez pas mettre à jour directement le composant parent à partir d'un composant enfant. Mais vous pouvez créer un service qui peut interagir de n'importe quel composant vers n'importe quel autre composant comme ci-dessous.

Créer un fichier 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);
    }

}

Dans le composant enfant

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'});
    }
}

Dans le composant parent

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 => {
        // ...
        })
    }
}

Articles connexes


Mettre à jour le composant enfant du parent dans Angular

MikePR J'ai du mal à le faire fonctionner dans Angular. J'ai un composant hôte (parent) qui utilise un enfant pour rendre une liste déroulante. La source de la liste est passée du parent. Par exemple, si le parent passe 5 éléments sur la propriété source, le c

Mettre à jour le composant enfant du parent

gsiradze dans layoutcomponentlequel est parent j'ai la forme. Lors de la soumission, je redirige le composant enfant à partir du composant de router-outletrecherche. C'est ma soumission onSubmit({ value }: { value: Search }) { this.sharedData.searchStr