【发布时间】:2017-04-28 00:03:11
【问题描述】:
我正在尝试使用 Ionic 2 + Angular 2 构建一个表单。这个表单是模型驱动的表单类型,所有验证都是使用验证器进行的。另外,还有两个 Observable 可以检查是否有互联网连接。
我还没有找到在没有互联网连接且表单无效时禁用提交按钮的方法。我怎样才能让这两个东西一起工作?
到目前为止,代码是这样的:
survey.html
<ion-header class="main-header">
<ion-navbar>
<button ion-button menuToggle>
<ion-icon name="menu"></ion-icon>
</button>
<ion-title>Questionário</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<form [formGroup]="form" (ngSubmit)="onSubmit()" class="form-bg" novalidate>
<div class="form-content">
<h5>1. Perfil do Fazendeiro</h5>
<div class="question">
<p><strong>1.1</strong> Em que perfil você se qualifica?</p>
<ion-list radio-group formControlName="isPropertyOwner">
<ion-item>
<ion-label><small>Proprietário do terreno</small></ion-label>
<ion-radio value="owner"></ion-radio>
</ion-item>
<ion-item>
<ion-label><small>O terreno é arrendado</small></ion-label>
<ion-radio value="lease"></ion-radio>
</ion-item>
<ion-item>
<ion-label><small>Outro</small></ion-label>
<ion-radio value="other"></ion-radio>
</ion-item>
</ion-list>
</div>
<br>
<button ion-button type="submit" block [disabled]="enableBtn()">Enviar</button>
</div>
</form>
</ion-content>
survey.ts
import { Component } from '@angular/core';
import { Validators, FormBuilder, FormGroup, FormControl } from '@angular/forms';
import { NavController, NavParams } from 'ionic-angular';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/fromEvent';
@Component({
selector: 'page-survey',
templateUrl: 'survey.html'
})
export class Survey {
form: FormGroup;
constructor(public alerCtrl: AlertController, public navCtrl: NavController,public toastCtrl: ToastController, public navParams: NavParams, public formBuilder: FormBuilder) {
this.form = formBuilder.group({
"isPropertyOwner": ["", Validators.required]
});
/* Check if it's online/offline */
var offline = Observable.fromEvent(document, "offline");
var online = Observable.fromEvent(document, "online");
var status;
offline.subscribe(() => {
status = false;
});
online.subscribe(() => {
status = true;
});
}
enableBtn() {
if (this.form.valid && status) {
return true
}
else return false;
}
onSubmit() {
console.log("model-based form submitted");
console.log(this.form);
}
}
提前致谢:)
【问题讨论】:
标签: forms angular typescript ionic2 observable