私はいくつかの例を作成しようとします
stepOneDataタイプのデータを取得するとstepOneDataを変更し、stepOneDataタイプのデータを取得するとstepTwoDataを変更するupdateStepDataメソッドを作成するにはどうすればよいですか?
updateStepData(data: StepOneData | StepTwoData): void {
Object.keys(data).map(key => {
// if (data instanceof StepOneData) {
this.stepOneData[key] = data[key];
// }
// if (data instanceof StepTwoData) {
this.stepTwoData[key] = data[key];
// }
});
}
instanceof演算子を使用してみましたが、ここでは機能しません。
私はあなたのStep1Componentでこのメソッドを見つけました:
onFormChanges(): void {
this.stepOneForm.valueChanges
.subscribe((data: StepOneData) => {
this.registrationService.updateStepData(data);
});
}
このように変更します:
onFormChanges(): void {
this.stepOneForm.valueChanges
.subscribe((data: StepOneData) => {
const stepOneData = new StepOneData();
stepOneData.firstName = data.firstName;
stepOneData.firstName = data.lastName;
this.registrationService.updateStepData(stepOneData);
});
}
Step2Componentにも同じことをします
これで、コードに記述したとおりにinstanceofを使用できます。
if (data instanceof StepOneData) {
this.stepOneData[key] = data[key];
}
if (data instanceof StepTwoData) {
this.stepTwoData[key] = data[key];
}
=========================================
読み取り可能なコードを作成するには、StepOneDataクラスとStepTwoDataクラスにコンストラクターを追加して、次のようにプロパティを初期化します。
export class StepTwoData {
constructor(public city:string,public state:string){}
}
およびコンポーネント内:
onFormChanges(): void {
this.stepTwoForm.valueChanges
.subscribe((data: StepTwoData) => {
const stepTwoData= new StepTwoData(data.city,data.state);
this.registrationService.updateStepData(stepTwoData);
});
}
==========================
更新:
より良い設計のために、タイプごとに2つのメソッドを作成することをお勧めします。たとえば、「UpdateStepOneData」と「UpdateStepTwoData」。
これらのメソッドに共有ロジックがある場合は、「UpdateStepData」という名前のメソッドに配置します。
UpdateStepOneData(data:StepOneData){
// Custom Code goes here
UpdateStepData(...); // Shared Logic goes here
}
UpdateStepTwoData(data:StepTwoData){
// Custom Code goes here
UpdateStepData(...); // Shared Logic goes here
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加