Bu davranışın bir nedenini aradığım için, bir 'Param' alt bileşeninde bir Input() özelliğinin değeri doğru zamanda güncelleştirilmiyor, gerekiyor Bir hizmeti parametre olarak çağırmak için güncellenmiş değeri kullanın. 'Çocuk değerini güncelle' butonuna basıldığında, LOG A (önce A değeri görüntülenir) (A LOG değeri görüntülenir) daha sonra (eski bir değer ile) görüntülenir.viewchild girdi özelliği gerektiğinde güncelleştirilemedi açısal 2
Veli bileşeni
@Component({
selector: 'parent',
template: `
<child #child [param]="parentParam"></child>
<button (click)="updateChildValue()">Update child value</button>
`})
export class Parent {
@ViewChild('child') child: Child;
public parentParam: number;
public updateChildValue() {
this.parentParam = 9;
this.child.showParam();
}
}
çocuk bileşeni
@Component({
selector: 'child',
template: '' })
export class Child {
private _param: number;
public get param() : number {
return this._param;
}
@Input('param')
public set param(v : number) {
this._param = v;
console.log('LOG A');
console.log(this.param);
}
public showParam() {
console.log('LOG B');
console.log(this.param);
//I need to call a service using the latest value of param here...
}
}
istenen davranış ilk güncellenmiş param değerine sahip ve daha sonra bir hizmeti parametre olarak bu değeri kullanmaktır. LOG A sonra LOG B
sizin önerilerinizi için teşekkürler @ HarryNinh, showParam yönteminde ChangeDetectorRef yöntemleri markForCheck ve detectChanges kullanmayı deniyordum. showParam sadece bir örnektir, gerçek kullanım: parentParam değişkeni bir servise yapılan çağrıda parametre olarak gönderilecektir. parentParam'daki herhangi bir anlamın anlamı, servisi hemen aramamız gerektiği anlamına gelmez. Şu anda açısal 1.x gibi bir sindirim arıyorum Şu anda bu 'otomatik olarak yapılır' bilerek Eğer ben doğru şekilde düşünüyorum? – destined