この動作の何らかの理由を探していて、子コンポーネント 'Param'のInput()プロパティの値が適切なタイミングで更新されていないため、更新された値を使用して、サービスをパラメータとして呼び出します。 '子値の更新'ボタンをクリックすると、LOG Aが表示された後(最初の値を持つ)最初にLOG Bが表示されます(LOG Aはプロパティの設定者にあります)。viewchild inputプロパティが必要なときに更新されない2
親コンポーネント
@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();
}
}
子コンポーネント
@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...
}
}
は、所望の動作は、最初の更新されたパラメーターの値を有し、そのサービスに関するパラメータとして、その値を使用することです。 LOG AとLOG B
は、あなたのsugestionsありがとうございました@ HarryNinh、showParamメソッドでChangeDetectorRefメソッドmarkForCheckとdetectChangesを使用しようとしていました。 showParamは実際の使用例です。parentParam変数は、サービス呼び出しのパラメータとして送信されます。 parentParamのanychangeは、サービスをすぐに呼び出す必要があるという意味ではありません。私は現在、角度1.xのような$ダイジェストを探していますが、これは「自動的に」行われていることを知っています。 私は正しい方法でいると思いますか? – destined