В конструкторе вы устанавливаете this.appointmentDetailId = this.id
, который устанавливает начальное значение this.id
(возможно, undefined
);
Позже вы установите this.id = params.get('id')
, но это не изменит this.appointmentDetailId
, потому что это два разных объекта.
Если вы хотите, чтобы this.appointmentDetailId
всегда совпадал с this.id
, вам следует сделать его простой оберткой, а не собственным объектом.
export class AppointmentDetailComponent implements OnInit {
id: any;
get appointmentDetailId() {
return this.id;
}
set appointmentDetailId(value: any) {
this.id = value;
}
// Other code
}
Используя пользовательский метод get
и set
, вы все равно можете получить доступ к this.appointmentDetailId
, как если бы это было его собственное поле - но на самом деле оно будет таким же, как this.id
. Теперь любые изменения в любом поле всегда будут синхронизированы.
// Always true
this.appointmentDetailId === this.id
this.appointmentDetailId = 123;
this.appointmentDetailId === 123; // True
this.id === 123; // True;
this.id = "Test";
this.appointmentDetailId === "Test"; // True
this.id === "Test"; // True
В качестве альтернативы, если вы можете просто опустить метод set и тогда вы просто сможете получить доступ к тому же значению, но вы не сможете его изменить.
// Always true
this.appointmentDetailId === this.id
this.appointmentDetailId = 123; // Error
this.id = "Test";
this.appointmentDetailId === "Test"; // True
this.id === "Test"; // True