【发布时间】:2020-07-09 11:01:05
【问题描述】:
我使用 navCtrl 从一个表格组件中推送数据,并使用 navParams 获取另一个组件中的数据,该组件用于计算表格中列号的总和。
第一个组件中的代码:(TableInputComponent)
onTableCellUpdated(updatedTableCell: TableCell) {
//this.logger.info(this.Label + 'onTableCellUpdated updatedTableCell:')
//this.logger.info(updatedTableCell)
// update gridRowJSON first - maintain data structure for displaying table
this.gridRowJSON[updatedTableCell.indexOfGridRowJSON][updatedTableCell.Header] = updatedTableCell.Data1;
//this.logger.info(this.Label + 'onTableCellUpdated this.gridRowJSON:')
//this.logger.info(this.gridRowJSON)
//this.logger.info(this.rows)
// update here to trigger update for table-input-cell
let updatingRow = this.rows[updatedTableCell.rowIndex]
if (updatedTableCell.InputType === this.UI_TYPE_CHECKBOX) {
updatingRow.filter(cell => cell.Header === updatedTableCell.Header)[0].Data1
= updatedTableCell.Data1
updatingRow.filter(cell => cell.Header === updatedTableCell.Header)[0].IsChecked
= updatedTableCell.Data1 === updatedTableCell.InputAttribute.split('_')[0]
// only uncheck other checkbox if selecting checkbox is checked
// prevent coming to this function again when other checkbox is unchecked
if (updatedTableCell.IsChecked && this.Data1) {
updatingRow.filter(cell =>
cell.Header !== updatedTableCell.Header
&& cell.InputType === 'CHECKBOX'
&& cell.InputWritable)
.forEach(cell => {
//this.logger.info(this.Label + 'onTableCellUpdated other CHECKBOX cell:')
//this.logger.info(cell)
cell.Data1 = ''
cell.IsChecked = false
});
}
}
this.Data1 = this.getSubmitJSON()
this.emitUserInput(TableInputComponent, this.Data1);
}
第二个组件中的代码:(CalculatorInputTableComponent)
public tableData: any
constructor(public navParams: NavParams) {
this.tableData = this.navParams.get('tableData')
this.logger.info("data1->", this.tableData)
}
calculate() {
this.logger.info("data2->", this.tableData)
}
当我在表中输入数据时,第一个组件会将数据传递给第二个组件,所以我会看到记录器显示 data1 值,因为它已被传递到构造函数中。 但是当我运行“calculate()”函数时,记录器会显示 data2 is “undefined”
似乎我无法从 calculate() 方法访问构造函数中的参数“tableData”。
谁能帮帮我?谢谢。
【问题讨论】:
-
你能告诉我你从哪里调用了calculate()函数吗?
-
表格和计算结果显示在同一个页面,我在计算结果旁边加了一个计算按钮来调用calculate()函数。
-
好的。您能否分享您的表格代码,以便我检查并帮助解决此问题?
-
我在我的帖子中更新了。但我认为我的问题只是当这两个组件在同一页面中时,如何将数据从一个组件传递到另一个组件。我使用了 navController 和 navParams,但它似乎用于在页面之间传递数据,而不是在一页内。另一个问题是如何从方法中访问构造函数中的变量。我只能在构造函数中使用 navParams 来获取数据,如果我在方法中编写 navParams 则无法获取数据。
-
通过组件传递数据最好通过服务来完成。查找角度服务,然后您可以在组件中初始化服务并调用数据。
标签: typescript ionic-framework parameters constructor