Динамический флажок не обновлен, если нет события щелчка - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть форма динамического флажка фильтра поставщика.

<form  (submit)="submit(form.value)">
        <label  class="form-check" *ngFor="let supplier of suppliers;">

          <input class="form-check-input" type="checkbox"
                 (change)="filter(supplier.label, $event.target.checked)"
                 [checked]="(filters|json).indexOf((supplier.label).id) >= 0"
          >
          <span class="form-check-label">
                <span class="float-right badge badge-light round">{{supplier.count}}</span>
                  {{(supplier.label).name}}
              </span>
        </label>
        <button class="btn btn-block btn-outline-primary">Apply</button>{{form.value|json}} <-- the form.value is not updated if filters is updated, even the input is unchecked-->
</form>

У меня есть два компонента, и я работаю с декоратором @Input (): filters, чтобы получать вид выбранных флажков от первого компонента.
Это мой компонент фильтра поставщика:

export class SupplierFilterComponent {

    form: FormGroup;
    suppliersFormArray: FormArray;
    @Input() suppliers: Aggregation[];
    @Input() filters: Filter[];
    @Output() eventEmitterFilter = new EventEmitter<number>();

    constructor(formBuilder: FormBuilder) {console.log(this.filters);
        this.form = formBuilder.group({
            'suppliers': formBuilder.array([])
        });
    }

    filter($label: string, isChecked: boolean) {
        const supplier = JSON.parse($label);

        this.suppliersFormArray = <FormArray>this.form.controls.suppliers;

        if (isChecked) {
            this.suppliersFormArray.push(new FormControl(supplier));
        } else {
            const index = this.suppliersFormArray.controls.findIndex(x => x.value.id === supplier.id);
            this.suppliersFormArray.removeAt(index);
        }
    }

    submit($event) {
        this.eventEmitterFilter.emit($event.suppliers);
    }
}

Обычно, если вход фильтра обновляется, значения формы флажка будут обновляться.Погодный вход проверен или не проверен (его зависимость от значения @Input (): filters).

Обычно, если filters изменить эту часть, (change)="filter(.. будет запущен.Но, к сожалению, (change) не срабатывает.Я не знаю, почему form.value не обновляется для каждого обновления значения @Input (): filters.(Обновляется только при нажатии)
Как видите, только в проверено, потому что this.filters содержит только в , но к сожалению form.value содержат еще один элемент "aspernatur".image

Я не понимаю, почему ввод не отмечен, но form.value не обновляется.Может кто-нибудь помочь мне разобраться, как обновить форму.значение, если filters значение изменено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...