Как проверить мою реактивную форму с помощью динамических кнопок? - PullRequest
1 голос
/ 05 июня 2019

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

У меня есть компонент details, в котором находится моя форма.я использую * ngSwitchCase и директиву для редактирования.Другой компонент - buttonsComponent, который в основном включает в себя цикл кнопок и атрибуты hidden и disable.моя основная логика в app.component.

это часть моего app.component:

 buttons: ButtonDef[] = [
    { label: 'Edit', iconClass: 'fa-pen-square',
      callbackFn: x => {
        this.editMode = true;
      },
      visibleFn: x => !this.editMode,
      enabledFn: x => x.canEdit,

    },
    { label: 'Save', iconClass: 'fa-check-square',
      callbackFn: x => {
        // console.log('Save pressed', x);
        this.editMode = false;
        this.hasChanges = false;
        const updated: Update<Document> = {
          id: x.id,
          changes: this.details.getUpdatedValues()
        };
        this.store.dispatch(new DocumentActions.Save(updated));
      },
      visibleFn: x => this.editMode,
      enabledFn: x => this.hasChanges
    },
    { label: 'Cancle', iconClass: 'fa-undo',
      callbackFn: x => {
        // console.log('Reset pressed', x);
        this.editMode = false;
      },
      visibleFn: x => this.editMode
    }
  ];

  editMode: boolean;
  hasChanges = false;

  constructor(private readonly store: Store<any>, private readonly api: 
  AppService) {
    this.documents$ = api.getAllDocuments();
  }

  onValueUpdated(event: boolean) {
    this.hasChanges = event;
    this.btns.update();
  }

  onSelectedId(event: string) {
    // console.log(event);
    if (event) {
      this.document$ = 
      this.store.pipe(select(DocumentSelectors.getById(event)));
      this.store.dispatch(new DocumentActions.Load(event));
    }
  }

Я хочу отключить кнопку Сохранить, пока не будет заполнено обязательное поле.

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