Angular2,Ionic2:仅当用户选择 4 个字段中的至少 2 个时,如何导航到下一页?

Angular2,Ionic2: How to navigate to next page only when user selects atleast 2 of the 4 fields?

我目前正在开发一个应用程序,其中主页包含用户必须选择的一组选项 select.The 选项是 3 个下拉列表,每个列表中都有不同的数据和一个文本 field.At 页面底部单击时我有一个按钮导航到下一个 page.But 我希望仅当用户 enters/selects 来自 4 个可用字段中的 2 个时才完成导航。

我读到了 button.But 的 [disabled] 功能,在我的例子中,我只想启用该按钮,但导航仍然不起作用。

我提到了这个 How do I enable a submit button if 1 or more checkboxes are checked? 但对我来说,这些字段是单独制作的,没有使用 ngFor。我希望提交按钮始终处于启用状态。

现在这是我的 html 页面,没有任何限制:

<ion-header>
  <ion-navbar>
     <button ion-button menuToggle>
      <ion-icon name="menu"></ion-icon>
    </button>
  </ion-navbar>
</ion-header>
  <ion-content>
    <br>
    <ion-item>
      <ion-input type="text" value="" placeholder="Enter Keyword" [(ngModel)]="textype"> </ion-input>
    </ion-item>
  <ion-item>
  <ion-label>Country</ion-label>
    <ion-select (ionChange)="onSelect(selectid)" [(ngModel)]="selectid">
      <ion-option *ngFor="let selectid of countryData" [value]="selectid">
        {{selectid.name}}
      </ion-option>
    </ion-select>
  </ion-item>

   <!--<ion-item *ngIf="compData">-->
     <ion-item>
  <ion-label>State</ion-label>
  <ion-select [(ngModel)]="catid">
      <ion-option *ngFor="let catid of stateData" [value]=catid>
        {{catid.name}}
      </ion-option>
    </ion-select>
  </ion-item>

<ion-item>
  <ion-label>
    Type of Vehicle
  </ion-label>
    <ion-select [(ngModel)]="typeid">
      <ion-option *ngFor="let typeid of vehicles">
        {{typeid}}
      </ion-option>
    </ion-select>
  </ion-item>
<br>
  <button type="submit" (Click)= "searchform" ion-button full > Search </button>

 </ion-content>

我实际上会对您提供的 link 进行衍生。由于您似乎有某种形式,我们可以利用它并查看为该形式创建的对象,并看到至少需要填写 2 个字段。在这种情况下,不是空字符串。

既然你有一个表单,你实际上不需要双向绑定,但如果你愿意,你当然可以保留它。但是您需要的是字段的 form 标记和 name 属性,对于您的提交按钮,您需要传递表单值。因此,您缩短的模板可能如下所示:

<form #myForm="ngForm" (ngSubmit)="submit(myForm.value)">
  <ion-item>
    <ion-input type="text" value="" placeholder="Enter Keyword" name="texttype" ngModel> </ion-input>
  </ion-item>
 <ion-item>
    <ion-label>Country</ion-label>
    <ion-select name="selectid" ngModel>
      <ion-option *ngFor="let selectid of countryData" [value]="selectid.name">
    {{selectid.name}}
      </ion-option>
    </ion-select>
 <ion-item>
 <button type="submit" ion-button full > Search </button>

然后是您的提交函数,遍历对象并使用计数器。如果计数器等于 2 或更多,请导航至您选择的页面,否则按您的意愿操作。

counter = 0;

submit(value) {
   for(let key in value) {
     if(value[key] != '') {
       this.counter++;
     }
   }
   if(this.counter >= 2) {
     // valid, navigate to other page
   }
   else {
     // not valid, do something else
   }
}

Here's a demo!