Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: TypeScript a využití funkce jako typ

Aktivity
Avatar
Ladislav Niderle:22.9.2021 15:08

Ahoj, potřeboval bych poradit jak se má správně vytvářet nebo používat classa, která má nějaké atributy a jeden z nich potřebuji mít jako funkci v Angularu 7.
Ta funkce by měla být bez návratu, jelikož jsem měl původní tlačítko které volalo toto:

generatePassword(): void {
    this.generateSmsUserPasswordExecutedSubject.next();
  }

Zkusil jsem: Našel jsem a zkusil následující:

onClick: () => void;
  iconName: string;
  tooltip: string;

Chci docílit: Snažím se dosáhnout toho, abych mohl předávat samotnou akci tlačítka, která se bude moc vykonat po stisku. Mám vytvořenou jednu komponentu, která má řešit vzhled, aby byl v celé aplikaci stejný design a toto je poslední věc aktuálně co se snažím doplnit. Takže se snažím předat this.generate­Password(), aby se to přes reference předalo.
Aktuálně to vypadá následovně:

generatePasswordButtonConfig: ActionButtonConfig = {
    onClick: this.generatePassword,
    iconName: 'repeat',
    tooltip: 'Vygenerovat nové heslo'
  };

Ale když kliknu na tlačítko, tak mi řekne, že ve funkci generatePassword nezná this.generateS­msUserPasswor­dExecutedSubject a tudíž ani property next.

Mohl by mi s tím prosím někdo poradit nebo ukázat kde mám chybu a nasměrovat správným směrem?

Předem Vám všem moc děkuji

 
Odpovědět
22.9.2021 15:08
Avatar
Odpovídá na Ladislav Niderle
Patrik Valkovič:22.9.2021 20:07

Ahoj. Jedná se o klasický problém s použitím this. Když funkci předáš jako this.generatePassword, tak se kontext té funkce (tj. to this) z funkce ztratí. Musíš funkci předat jiným způsobem.

eneratePasswordButtonConfig: ActionButtonConfig = {
    onClick: this.generatePassword.bind(this),
    iconName: 'repeat',
    tooltip: 'Vygenerovat nové heslo'
};

Z hlediska TypeScriptu je to otypovýní správně.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
22.9.2021 20:07
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na Patrik Valkovič
Ladislav Niderle:24.9.2021 12:33

Moc děkuji za radu. Funguje krásně.

 
Nahoru Odpovědět
24.9.2021 12:33
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.