调用 Ionic 2 组件中的函数



我正在开发一个具有多种形式的应用程序。其中一些表单非常非常大(50+ 字段)。允许用户填写一个或多个表单,提交表单后,生成的 JSON 将发送到 PHP 后端,后者将其转换为 CSV。

后端 PHP 服务不知道结构,它只是将每个 JSON 元素转换为列/值。

问题所在

目前,如果用户填写表单 1 和表单 4,则生成的 CSV 如下所示:

FORM 1,  ,  ,  FORM 3
Col1,Col2,Col3,Col1,Col2,Col3
Val1,Val2,Val3,Val1,Val2,Val3

我需要更改此设置,因此无论是否填写 FORM 2,其列都会以空值打印在 CSV 中。这样,CSV 输出将具有一致的结构。

可能的办法

我可以解决这个问题的一种方法是简单地为 FORM 2 定义一个对象,并将其与具有空值的表单 1 和表单 3 一起发送:

type    Form2 = {
columns : {
col1 : string,
col2 : string,
col3 : string
}
};
let form2Object = {
columns : {
col1 : '',
col2 : '',
col3 : ''
}
} as Form2;

但是,为我正在使用的许多表单执行此操作,每个表单都有许多列,实际上需要我花费数天时间。

我希望解决这个问题的第二种方法是简单地创建一个返回表单 2 值的函数,如下所示:

function returnFormTwo() {
return this.formTwo.value
}

但是,我无法弄清楚如何在 Ionic 2 中调用表单 2 组件中的函数?

我正在尝试这样的事情:

import { FormTwoPage } from '../pages/form-two/form-two';
constructor(public navCtrl: NavController, public navParams: NavParams, public appGlobal: AppGlobal, public formTwo: FormTwoPage) {}
ionViewDidLoad() {
let formTwoObj = this.formTwo.returnFormTwo();
}

我应该怎么做?

谢谢。

更新:这是FormTwoPage的外观:

@Component({
selector: 'page-form-two',
templateUrl: 'form-two.html'
})
export class FormTwoPage {
formTwo: FormGroup;
constructor(public navCtrl: NavController, public navParams: NavParams, public formBuilder: FormBuilder, public toastCtrl: ToastController, 
public appGlobal: AppGlobal, public dataService: FormData, public modalCtrl: ModalController) {
this.formTwo = formBuilder.group({
col1: [''],
col2: [''],
col3: ['', Validators.compose([Validators.minLength(3), Validators.maxLength(40)])]
});
}
}

您可以使用ViewChild

import {ViewChild} from '@angular/core';
@ViewChild(FormTwoPage) 
formPage:FormTwoPage;
ionViewDidLoad() {
let formTwoObj = this.formPage.returnFormTwo();
}

确保returnFormTwo()public

更新没有注入到构造函数中的页面。FormTwoPage 不是要在构造函数中设置的提供程序。

相关内容

  • 没有找到相关文章

最新更新