我使用以下代码构建表单字段:
val query =
s"""
|(SELECT tbl.*
|FROM $tableName tbl
|WHERE tbl.id IN (${idList.mkString("'", "','", "'")})
|) $tableName
""".stripMargin
private def queryToDf(tableName: String, query: String, props: Properties)(implicit spark: SparkSession, appConfig: AppConfig): sql.DataFrame = {
spark.read.format("jdbc")
.option("url", appConfig.dbURL)
.option("dbtable", tableName)
.option("user", appConfig.dbUsername).option("password", appConfig.dbPassword)
.option("fetchsize", appConfig.fetchsize.toString)
.option("driver", appConfig.jdbcDriver)
.load()
.selectExpr(query)
}
我需要所有形式的字段都输入
query
因为我想要获得类似以下内容的财产:
selectExpr()
我尝试过:
this._form = this._builder.group(
{
code: [null, [Validators.required]],
startDate: [null, [Validators.required]],
finishDate: [null, []],
name: [null, []],
shortName: [null, []],
linkFieldId: [null, [Validators.required]]
}
);
答案 0 :(得分:3)
不幸的是,没有键入反应形式,该值将始终为任意值。
return this._form.value as IFields;
或
return (this._form.value as IFields).code;
是正确的解决方案。
此外,您可以键入表单设置(但仅用于检查是否已设置所有需要的字段并防止输入错误)-不会影响值类型:
this._form = this._builder.group(
{
code: [null, [Validators.required]],
startDate: [null, [Validators.required]],
finishDate: [null, []],
name: [null, []],
shortName: [null, []],
linkFieldId: [null, [Validators.required]]
} as { [k in keyof IFields]: any }
);
答案 1 :(得分:1)
您不能将类型传递给FormGroup。尽管您可以使用Regex Angular验证器,但它可能与您要实现的目标接近。