有什么方法可以在Shiny的验证消息中呈现HTML?我使用HTML
包装器,tags$...
函数以及用于验证消息的单独htmlOutput
尝试了不同的方法,但没有任何一种起作用。这是一个显示此问题的简单示例应用程序-select
在验证消息中应为粗体,但HTML标记已转义(我知道是人为的示例,但希望传达了这个想法,我主要希望使用此示例在邮件中包含fa图标)
runApp(
list(
ui = fluidPage(
titlePanel("Validation App"),
sidebarLayout(
sidebarPanel(
selectInput("data", label = "Data set", choices = c("", "mtcars"))
),
mainPanel(tableOutput("table"))
)
),
server = function(input, output) {
data <- reactive({
# validate test
validate(
need(input$data != "", HTML("Please <strong>select</strong> a data set"))
)
get(input$data, 'package:datasets')
})
output$table <- renderTable(head(data()))
}
)
)
答案 0 :(得分:1)
最简单的解决方案是使用uiOutput
,并在renderUI
函数内部放一个if
来验证输入。在下面的代码中,是使用HTML
和tags$...
函数的示例。您还可以放置一个图标。
library(shiny)
runApp(
list(
ui = fluidPage(
titlePanel("Validation App"),
sidebarLayout(
sidebarPanel(
selectInput("data", label = "Data set", choices = c("", "mtcars"))
),
mainPanel(uiOutput("tableUI"))
)
),
server = function(input, output) {
data <- reactive({
get(input$data, 'package:datasets')
})
output$tableUI <- renderUI({
if (input$data == "") {
div(
HTML("Please <strong>select</strong> a data set"),
tags$p(icon("exclamation"), "Please",tags$strong("select"), "a data set")
)
} else {
tableOutput("table")
}
})
output$table <- renderTable(head(data()))
}
)
)