В моем ui.RI есть uiOutput и кнопка, которая позволяет мне добавлять selectInput по желанию одним кликом. Возможные варианты этих selectInput одинаковы, поэтому, когда у вас есть два selectInput, обновление одного влияет на выбор другого. У меня проблема в том, что я не могу обновить выбор на selectInput после обновления на selectInput. Вот код.
В Ui.R
div(id="inference_species_group_div",
box(h5(strong(uiInferenceSpeciesGroup)), width = "100%",
fluidRow(
column(width = 6, id = "inference_species_group_inputs_col",
uiOutput("inf_par_sp_group_output_1")
)
),
br(),
fluidRow(
column(width = 12, id = "inference_species_group_add_input_col",
actionButton("inference_species_group_add_input_btn", uiInferenceSpeciesGroupAdd, icon = icon("plus"))
)
)
)
)
на сервере. R
observeEvent(input$inference_species_group_add_input_btn, {
addInfParSpGroupAdd()
})
addInfParSpGroupAdd <- function(){
InfParSpGpInd <<- InfParSpGpInd + 1
output[[paste0("inf_par_sp_group_output_", InfParSpGpInd)]] <- renderUI({
list(
fluidRow(
column(width=8,
selectInput(paste0("inf_par_sp_group_select_", InfParSpGpInd),
label=paste0(uiInferenceSpeciesGroupInputLabel, ""),
multiple=T, choices = InfParSpGpListSp, selected = NULL
)
),
column(width=1, id=paste0("inf_par_sp_group_rmv_col_", InfParSpGpInd),
actionButton(paste0("inf_par_sp_group_rmv_btn_", InfParSpGpInd), "", icon = icon("times"),
onclick = paste0("Shiny.onInputChange('removeGroupSpecies', ", InfParSpGpInd, ")")
)
),
tags$style(type='text/css', paste0("#inf_par_sp_group_rmv_col_", InfParSpGpInd, " {padding-top:4%}"))
),
uiOutput(paste0("inf_par_sp_group_output_", (InfParSpGpInd + 1)))
)
})
observeEvent(input[[paste0("inf_par_sp_group_select_", InfParSpGpInd)]], {
selectedInInput = input[[paste0("inf_par_sp_group_select_", InfParSpGpInd)]]
InfParSpGpListSp <<- InfParSpGpListSp [! InfParSpGpListSp %in% selectedInInput]
rebindGroupSpeciesInputs()
})
}
observeEvent(input$removeGroupSpecies, {
i = input$removeGroupSpecies
selectedInInput = input[[paste0("inf_par_sp_group_select_", i)]]
output[[paste0("inf_par_sp_group_output_", i)]] <- renderUI({
uiOutput(paste0("inf_par_sp_group_output_", (i + 1)))
})
if (!is.null(selectedInInput) && length(selectedInInput) > 0){
InfParSpGpListSp <<- c(InfParSpGpListSp, selectedInInput)
rebindGroupSpeciesInputs()
}
})
rebindGroupSpeciesInputs <- function(){
for (i in 1:InfParSpGpInd){
if (!is.null(input[[paste0("inf_par_sp_group_select_", i)]])){
updateSelectInput(session, input[[paste0("inf_par_sp_group_select_", i)]], choices = InfParSpGpListSp)
}
}
}
В этой строке
updateSelectInput(session, input[[paste0("inf_par_sp_group_select_", i)]], choices = InfParSpGpListSp)
значение InfParSpGpListSp
должно быть таким, каким оно должно быть, но selectInput / selectizeInput не обновляет список вариантов выбора.