角度根据其他值从对象获取值

时间:2017-11-24 16:29:57

标签: angular typescript

我的 form.service.ts 包含以下数组对象;

readonly userTypesOptions = [
    { value: 'ADMIN', text: 'Administrator' },
    { value: 'MEMBER', text: 'Member' },
    { value: 'GUEST', text: 'Guest' }
];

getUserTypes() {
    return this.userTypesOptions; 
}

和带有变量的 form.component.ts

currentUser = 'ADMIN'

我希望从我的HTML模板中的上面的对象中获取关联的文本值。遗憾的是,下面的代码不起作用,因为我不知道如何根据值获取文本。

form.component.html

{{ userTypesOptions[currentUser].text }}

帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

正如@Explosion Pills所说

require(shiny)
require(shinyBS)

shinyApp(ui = fluidPage(
  shinyjs::useShinyjs(),
  bsTooltip(id = 'input', title = "Lets delay this appearing for 1s and force disappear after 5s", 
    placement = "bottom", trigger = "hover", options = list(delay = list(show=1000, hide=3000))),

  sidebarLayout(
    sidebarPanel(
      selectInput(inputId = 'input', label = 'input', choices = c('cats','dogs'))
    ),
    mainPanel()
  )
)
, server = function(input, output){})

或:

getValue(currentUSER){
   let option = this.userTypesOptions.find(opt => opt.value === currentUSER);
   return (option || {}).text;
}

并像这样访问它:

readonly userTypesOptions = {
    'ADMIN' :'Administrator',
    'MEMBER': 'Member' ,
    'GUEST':'Guest' 
}

答案 1 :(得分:0)

您正在尝试按值而不是键来查找选项类型。

在userTypesOptions中,没有名为' ADMIN'的密钥。 ' ADMIN'是由KEY'值标识的值。

你能做到的是:

readonly userTypesOptions = [
    { 'ADMIN': 'Administrator' },
    { 'MEMBER': 'Member' },
    { 'GUEST': 'Guest' }
];

然后,每当您使用KEY' ADMIN'访问该项目时,您将获得VALUE'管理员'

{{ userTypesOptions[currentUser] }}  // <-- renders 'Adminisrator' when currentuser = 'ADMIN'
编辑:我想我的答案不太正确,您还希望将userTypesOptions转换为对象而不是数组,如下所示:

readonly userTypesOptions = {
    'ADMIN': 'Administrator',
    'MEMBER': 'Member',
    'GUEST': 'Guest'
};