Metoda, která používá data získaná z pozorovatelný na jeho vlastní komponentu vrátí undefined pokud je použit jako Vstup()

0

Otázka

Vytvořil jsem šablonu example.component.html že dostane metoda jako proměnnou do jeho klepněte na tlačítko akce:

<div>
  <button (click)="method()">click here</button>
</div>

na example.component.ts soubor, metody pochází z input(), takže mohu použít tuto šablonu na více situací:

@Component({
  selector: 'example',
  templateUrl: './example.component.html',
})
    export class ExampleComponent implements OnInit {
      @Input() method;
    
      constructor() {}
    
      ngOnInit(): void {}
    }

Tady to začíná být komplikované. Na nadřazené složky, metody, která bude spuštěna, klepněte na příkaz používá proměnné přicházející z pozorovatelný:

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 {}
}

I když mateřská komponenta je objednají businessEntityService pozorovatelné a já jsem zkontrolovat, že má ve skutečnosti data, když jsem klepněte na tlačítko protokoly konzole undefined.

Chápu, že to asi má co dělat s rozsahem a zásobníku hledá this.business na děti složka, nicméně bych rád věděl, jestli je tam vůbec volat metodu, která používá proměnnou z předplatného, z vlastní složky jako Vstup().

angular rxjs typescript
2021-11-24 03:00:01
1

Nejlepší odpověď

2

Na this kontext je ztracen (myslím). Se může stát, když kolem metody třídy jako params

Vyměňte ParentExampleComponent#onClick metoda s:

onClick = () => {
    console.log(this.business);
}

Poznámka: v zákulisí, Strojopis nyní bude léčit onClick jako třída majetku, a pohyby, které kódu do konstruktoru. Pomocí šipky funkce uzamkne this souvislosti, že funkce

2021-11-24 07:10:18

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................