Gözlemlenebilir bir bileşenden alınan verileri kendi bileşeninde kullanan yöntem, İnput()olarak kullanıldığında tanımsız döndürür.

0

Soru

Bir şablon oluşturdum example.component.html bu, tıklama eylemine değişken olarak bir yöntem alır:

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

on the example.component.ts dosya, yöntem bir input () öğesinden gelir, böylece bu şablonu birden çok durumda kullanabilirim:

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

İşte burada işler karışıyor. Üst bileşende, tıklandığında tetiklenecek yöntem gözlemlenebilir bir değişkenden gelen bir değişkeni kullanır:

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

Üst bileşen abone olsa bile businessEntityService gözlemlenebilir ve aslında verilere sahip olduğunu kontrol ettim, düğmeye tıkladığımda konsol günlükleri undefined.

Bunun muhtemelen kapsamla ilgisi olduğunu ve yığının aradığını anlıyorum this.business bununla birlikte, children bileşeninde, kendi bileşeninden bir abonelikten bir değişkeni İnput () olarak kullanan bir yöntemi çağırmak için herhangi bir yöntem olup olmadığını bilmek isterim.

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

En iyi cevabı

2

Bu this bağlam kayboluyor (sanırım). Sınıf yöntemlerini params olarak geçirirken olabilir

Değiştir ParentExampleComponent#onClick yöntemi ile:

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

Not: sahnelerin arkasında, Typescript şimdi tedavi edecek onClick bir sınıf özelliği olarak ve bu kodu yapıcıya taşır. Bir ok işlevi kullanmak kilitleri this bu işlevin bağlamı

2021-11-24 07:10:18

Diğer dillerde

Bu sayfa diğer dillerde

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