Me cuesta entender esto.
Tengo un componente al que paso una variable de la siguiente manera:
<app-selectcomp [plid]="plid" [codeId]="selectedCode" (notify)="getCompFromChild($event)"></app-selectcomp>Estoy pasando dos variables: plid y codeId.
Con estas dos variables, hay algunas acciones del usuario que crean una matriz llamada response.data
Pude enviar response.data al componente principal de la siguiente manera:
@Output() notify: EventEmitter<string> = new EventEmitter<string>(); this.notify.emit(this.response.data)Y luego, en el componente principal
getCompFromChild(values): void {}Todo esto funciona bien, excepto que para obtener los datos en el componente principal, tengo que activarlo desde el componente secundario, por ejemplo, con un clic de botón.
No puedo encontrar una manera de obtener el valor de response.data, que existe en el componente secundario, pero directamente desde el componente principal, por ejemplo, haciendo clic en un botón en el componente PADRE.
<button type="submit" (click)="getDatainChild()">Get Child Data</button>Gracias.
Puede usar @ViewChild() para obtener el comportamiento deseado al tener una referencia al componente secundario del padre. Siguiendo este enfoque, el padre podrá llamar a los métodos públicos del componente secundario. Algo como esto:
En su componente principal (.ts):
@ViewChild('selectComp') selectComp: SelectComponent; <= specify the type of your child componentEn su componente principal (.html)
<app-selectcomp #selectComp [plid]="plid" [codeId]="selectedCode" (notify)="getCompFromChild($event)"> </app-selectcomp>En su componente hijo (.ts) Cree un método que será llamado por el padre
public getData() { } Ahora, puede llamar al método getData() del componente secundario dentro del componente principal.
selectComp.getData();