Ho creato un modello example.component.html
che riceve un metodo come una variabile di fare clic su azione:
<div>
<button (click)="method()">click here</button>
</div>
sul example.component.ts
file, il metodo nasce da un input(), quindi posso utilizzare questo modello in più situazioni:
@Component({
selector: 'example',
templateUrl: './example.component.html',
})
export class ExampleComponent implements OnInit {
@Input() method;
constructor() {}
ngOnInit(): void {}
}
Qui è dove le cose si fanno complicate. Il componente principale, il metodo che sarà attivato fare clic su utilizza una variabile proveniente da un osservabili:
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 {}
}
Anche se il componente principale è la sottoscrizione businessEntityService
osservabili e ho di controllo ha, infatti, dati, quando clicco il pulsante, il log della console undefined
.
Capisco che probabilmente ha a che fare con l'ambito e la pila è alla ricerca di this.business
al di componente, tuttavia mi piacerebbe sapere se c'è comunque la chiamata di un metodo che utilizza una variabile da un abbonamento da un proprio componente, come Input().