J'ai créé un modèle de example.component.html
qui reçoit une méthode comme une variable à son action du clic:
<div>
<button (click)="method()">click here</button>
</div>
sur le example.component.ts
fichier, la méthode vient de l'entrée(), donc je peux utiliser ce modèle sur plusieurs situations:
@Component({
selector: 'example',
templateUrl: './example.component.html',
})
export class ExampleComponent implements OnInit {
@Input() method;
constructor() {}
ngOnInit(): void {}
}
Voici où ça devient compliqué. Le composant parent, la méthode qui sera déclenché sur cliquez utilise une variable provenant d'une observable:
parent-example.component.html
<example [method]="onClick"></example>
parent-example.component.ts
@Component({
selector: 'parent-example',
templateUrl: './parent-example.component.html',
})
export class ParentExampleComponent implements OnInit {
@Input() method;
business;
constructor(businessEntityService: BusinessEntityService) {
businessEntityService.entities$.subscribe(
data => (this.business = data),
);
}
onClick() {
console.log(this.business);
}
ngOnInit(): void {}
}
Même si le composant parent est l'abonnement businessEntityService
observables et j'ai vérifier qu'il a dans les données de fait, lorsque je clique sur le bouton, les journaux de la console undefined
.
Je comprends ce qui a probablement à voir avec la portée et la pile est à la recherche d' this.business
les enfants composant, cependant j'aimerais savoir si il y a de toute façon d'appeler une méthode qui utilise une variable à partir d'un abonnement à partir de son propre composant d'Entrée().