Cuando me cansé de acceder a un valor de componente angular dentro de un decorador personalizado, recibo un error que indica que this no está definido. A partir de la documentación en línea, descubrí que la función de decorador se llamará primero incluso antes de la inicialización de la clase. Debido a esto, los decoradores no tendrán acceso a las variables de instancia.
Nota: Intenté crear una variable estática e intenté acceder a la variable estática dentro del decorador personalizado. El único problema con este enfoque es que customDecorator se ejecuta primero antes de asignar el valor a la variable estática. Por lo tanto, AccountId no está definido cuando intenté acceder dentro de customDecorator.
¿Cómo puedo acceder a este AccountId dentro del decorador personalizado? Cualquier ayuda sería muy apreciada.
import { Component,Input, OnInit } from '@angular/core'; import {CustomDecorator } from '@sharedDecorators'; @Component({ selector: 'app-account-display', templateUrl: './accounts.component.html', styleUrls: ['./account s.component.scss'] }) export class AccountsComponent implements OnInit { @Input() AccountId: string constructor() { } @CustomDecorator(this.AccountId) ngOnInit() { } ........................... }hu Ane!
si AccountId se pasa estáticamente desde el padre, simplemente puede:
ngOnInit() { console.log(this.AccountId) }si AccountId es asíncrono, puede hacer algo como esto
@Input() get AccountId(value: string) { if(value) { this.accountID$.next(value) } } accountId$ = new ReplaySubject<any>() ngOnInit() { this.accountId$.subscribe((x) => console.log(x) ) <-- remember to unsubscribe }aquí puedes encontrar más información