Как я могу извлечь выбранные элементы флажка и отобразить их в окне?

#javascript #arrays #angular #typescript

Вопрос:

Я пытаюсь извлечь выбранные значения флажков и отобразить их в окне предупреждения. В настоящее время у меня есть это, чтобы, когда пользователь выбирает флажок и нажимает кнопку, он регистрировал массив в консоли. Я хочу отобразить эти параметры в окне предупреждения, но в настоящее время окно отображается неопределенным. Я сохраняю значения и зацикливаюсь на массиве в одном компоненте и использую декоратор @Input для извлечения значений в другом компоненте, где я также буду выполнять вычисления (в конечном итоге).

услуги.компонент.ts

 export class ServicesComponent {

  serviceForm: FormGroup;

  name: string;

  serviceData = [{
      serviceName: "Password Reset",
      servicePrice: 39.99,
      checked: false,
    },
    {
      serviceName: "Spyware Removal",
      servicePrice: 99.99,
      checked: false,
    }
  ];

  get servicesFormArray() {
    return this.serviceForm.controls.orders as FormArray;
  }

  constructor(
    private formBuilder: FormBuilder,
    private _snackBar: MatSnackBar
  ) {
    this.serviceForm = this.formBuilder.group({
      orders: new FormArray([]),
    });

    this.addCheckboxesToForm();
  }

  private addCheckboxesToForm() {
    this.serviceData.forEach(() =>
      this.servicesFormArray.push(new FormControl(false))
    );
  }

  openSnackBar(message: string) {
    this._snackBar.open(message   " was added!");
  }

  submit() {
    const selectedServices = this.serviceForm.value.orders
      .map((checked, i) => (checked ? this.serviceData[i].serviceName : null))
      .filter((v) => v !== null);
    console.log(selectedServices);
  }
}
 

счет-фактура.компонент.ts (где я пытаюсь показать выбранные параметры)

 @Component({
  selector: 'services',
  templateUrl: './invoice.component.html',
  styleUrls: ['./invoice.component.css']
})

export class InvoiceComponent {

  @Input() selectedServices: string;
  
  constructor(public dialog: MatDialog) {}

  }

  displayValues() {

    alert(this.selectedServices);

  }
}

}
 

also my services component

   <form [formGroup] = "serviceForm" (ngSubmit) = "submit()">
    <label formArrayName="orders" *ngFor="let order of servicesFormArray.controls; let i = index">
      {{serviceData[i].serviceName}}
      {{"$"   serviceData[i].servicePrice}}
      <input type = "checkbox" (change)="openSnackBar(serviceData[i].serviceName)" [formControlName] = "i" style="display: block;" >


    </label>
    <br/>
    <br/>

    <mat-form-field appearance="fill">
      <mat-label>What's your name?</mat-label>
      <input matInput [(ngModel)]="name">
    </mat-form-field>

    <button mat-raised-button (click)="invoice.calculateInvoice()">Calculate Invoice</button>
    <services #invoice></services>
  </form>