Sist endret: 29. okt. 2026
Preview: Dette er dokumentasjonen for Altinn Studio v9, som er en forhåndsversjon. Gjeldende versjon er v8. For å se dokumentasjonen for gjeldende versjon, velg v8 i versjonsvelgeren i menyen til venstre.

Kodelister fra repeterede strukturer

Kodelister hentet fra en repeterende struktur i datamodellen

Når alternativene i en kodeliste endrer seg ofte basert på data i datamodellen, har du to hovedalternativer:

  • Dynamiske kodelister med spørringsparametre (beskrevet under Dynamiske kodelister): Du skriver kode på backend for å generere kodelisten og sender verdier fra datamodellen til backend via spørringsparametre. Ulempen er at denne fremgangsmåten skalerer dårlig når kodelisten endrer alternativene ofte.

  • Kodelister fra repeterende strukturer (anbefalt): Du setter opp en kodeliste basert direkte på en repeterende struktur i datamodellen. Datamodellen blir da selve kilden til alternativene. Dette er spesielt nyttig i kombinasjon med RepeatingGroup-komponenten, da brukeren kan legge til og fjerne elementer fra listen, og systemet oppdaterer alternativene automatisk.

Du trenger ikke en RepeatingGroup-komponent for å bruke denne funksjonaliteten, men datamodellen må inneholde en repeterende struktur.

Konfigurasjon

For å sette opp kodelister som hentes ut fra datamodellen, bruker du egenskapen source. I dette objektet definerer du feltene group, label og value. Eksempel:

App/ui/{taskId}/layouts/{page}.json
{
  "id": "dropdown-component-id",
  "type": "Dropdown",
  ...
  "source": {
    "group": "some.group",
    "label": "dropdown.label",
    "value": "some.group[{0}].someField"
  }
}

Forklaring:

  • group - den repeterende strukturen i datamodellen som du baserer kodelisten på.
  • label - en referanse til en tekstnøkkel du bruker som ledetekst for hvert svaralternativ. Se mer under.
  • value - en referanse til feltet i den repeterende strukturen du bruker som verdi, og som systemet lagrer når brukeren gjør et valg. Legg merke til at vi har fylt inn [{0}], som systemet erstatter med indeksen til det repeterende elementet.

Verdien hentet ut fra value må være unik for hvert repeterende element. Hvis du ikke har et felt som er unikt per rad, anbefaler vi at du legger på et ekstra felt i datamodellen som kan brukes som identifikator. For eksempel en GUID eller liknende. Hvis verdien ikke er unik, filtrerer systemet den bort fra alle kodelister, og antallet svaralternativer tilgjengelige for brukeren kan da være noen færre enn forventet ut fra det som ligger i datamodellen.

For label-feltet må vi definere en tekstressurs som systemet kan bruke som ledetekst for hvert svaralternativ. I eksempelet under, brukes andre verdier fra den repeterende strukturen i ledeteksten via variabler i tekst:

App/config/texts/resource.nb.json
{
  "language": "nb",
  "resources": [
    {
      "id": "dropdown.label",
      "value": "Person: {0}, Age: {1}",
      "variables": [
        {
          "key": "some.group[{0}].name",
          "dataSource": "dataModel.default"
        },
        {
          "key": "some.group[{0}].age",
          "dataSource": "dataModel.default"
        }
      ]
    }
  ]
}

Støtte for uttrykk

Egenskapene label, description og helpText støtter også dynamiske uttrykk i denne modusen.

App/ui/{taskId}/layouts/{page}.json
{
  "id": "checkboxes-component-id",
  "type": "Checkboxes",
  ...
  "source": {
    "group": "some.group",
    "label": "checkboxes.label",
    "description": "checkboxes.description",
    "helpText": [
      "if", ["equals", ["dataModel", "some.group.someField"], "someValue"],
        "checkboxes.helpText1",
      "else",
        "checkboxes.helpText2"
    ],
    "value": "some.group[{0}].someField"
  }

I eksempelet over er helpText satt opp til å vise forskjellige hjelpetekster basert på verdien av someField i hver rad i gruppen. Uttrykket finner selv riktig rad, så du trenger ikke å oppgi indeksen. Hvis someField er lik someValue, vil hjelpeteksten være checkboxes.helpText1, ellers vil den være checkboxes.helpText2.