R Shining中的意外dateInput行为

R Shining中的意外dateInput行为,r,shiny,R,Shiny,我有一个闪亮的应用程序,带有dateInput(),它是用以下代码创建的: dateInput( inputId = ns("mutatie_datum"), label = "Mutatiedatum:", value = "2019-12-01", format = "dd-M-yyyy", startview =

我有一个闪亮的应用程序,带有
dateInput()
,它是用以下代码创建的:

dateInput(
          inputId = ns("mutatie_datum"),
          label = "Mutatiedatum:",
          value = "2019-12-01",
          format = "dd-M-yyyy",
          startview = "month",
          language = "nl"
        )

当我运行应用程序时,将光标放在
dateInput()
字段中并手动删除9,我的应用程序崩溃。使用
browser()
我可以看到
dateInput()
的值已变成
“0201-12-01”
。如何防止应用程序在输入有效日期之前执行计算?

shinny
具有一些内置函数来验证值。下面,我使用了
验证
/
需要
的组合,如果日期无效,则显示错误消息。如果您只想在没有错误消息的情况下停止代码的执行,可以使用
req

library(shiny)

ui <- fluidPage(
  dateInput(
    inputId = "mutatie_datum",
    label = "Mutatiedatum:",
    value = "2019-12-01",
    format = "dd-M-yyyy",
    startview = "month",
    language = "nl"
  ),
  verbatimTextOutput("test_out")
)

server <- function(input, output, session) {
  
  datum_fun <- reactive({
    # check the date
    validate(
      need(as.Date(input$mutatie_datum) > as.Date("2000-01-01"), "invalid date")
    )
    
    # do some calculations here
    input$mutatie_datum
  })
  output$test_out <- renderPrint({
    datum_fun()
  })
}

shinyApp(ui, server)
库(闪亮)

ui谢谢@starja我会试试这个!