如何将类型传递给FormGroup?

时间:2019-09-13 14:47:10

标签: angular angular8

我使用以下代码构建表单字段:

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]]
      }
    );

2 个答案:

答案 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验证器,但它可能与您要实现的目标接近。